2012-05-07 1 views
0

У меня есть связанное поле в gridview, которое программно получает гиперссылку на содержимое в нем. После изменения индекса выпадающего списка он получает новый набор данных. Один из столбцов набора данных будут применяться ссылки на поля с данными и пропустить тех, кто без, вы можете увидеть мою логику для применения ссылки ниже:ASP.NET Boundfield изменяется, когда я обновляю другой gridview

if (e.Row.DataItem != null && int.TryParse(e.Row.Cells[4].Text, out incidents)) 
{ 
    HyperLink incidentsLink = new HyperLink(); 
    incidentsLink.ForeColor = System.Drawing.Color.Blue; 
    incidentsLink.NavigateUrl = "~/somesite.aspx?no=" + stnNum + "&dt=" + date; 
    incidentsLink.Text = e.Row.Cells[4].Text; 
    e.Row.Cells[4].Controls.Add(incidentsLink); 
} 

Это применяется OnRowDataBound для GridView. Затем у меня есть другое gridview, которое подключено к другому выпадающему списку. Когда индекс ниспадающего списка изменяется, он захватывает новый набор данных для связанного gridview и запускает обновление ajax с помощью панели обновления.

Что происходит, когда второй gridview обновляет его, стирает ссылки в первом gridview. Он не стирает текст, который остается, но текст больше не привязан к ссылке. Все ссылки, сделанные таким образом и помещенные в gridviews, теряют свои свойства ссылок, однако поля, созданные с помощью asp: HyperLinkField, остаются неизменными. Проблема в том, что stnNum и дата не являются частью набора данных, который возвращается для первого gridview, поэтому я должен добавить их как ссылку после того, как gridview уже построен.

Единственное решение, о котором я могу думать, - это отредактировать функцию, которая добавляет ссылки на gridview каждый раз при обновлении второго gridview. Любые другие решения были бы полезны, или объяснение того, почему моя ссылка стирается, было бы здорово.

ответ

0

Попробуйте привязать GridView/DropDowns только в том случае, если нет POSTBACK. Я считаю, что событие POST Back позволяет вашему gridview & Элементы управления, чтобы как-то потерять свои данные.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
    // Bind your Grids & Dropdowns here on page load 
    } 
}