Это было покрыто несколько раз, без подходящего ответа:Как мне дважды привязать объект ObjectDataSource к привязке?
Я создал класс данных пользовательских подкачки, который используется с ObjectDataSource. В интуитивных тестах я обнаружил, что он работает хуже, чем мой старый код SqlDataSource. Во время исследования я обнаружил, что для каждой загрузки страницы объект ObjectDataSource создается и привязывается дважды.
Исследуя ссылки выше привели меня к мысли, что это может быть ошибка (или необъяснимое поведение) относительно изменения моей видимости столбца GridView в случае OnDataBound так:
protected void gvContacts_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType != DataControlRowType.Pager && e.Row.Cells[0].Text != gvContacts.EmptyDataText)
{
e.Row.Cells[0].Visible = false;
if (Convert.ToInt16(lstSearchType.SelectedValue) == ADDRESS)
{
gvContacts.Columns[2].ItemStyle.Width = Unit.Percentage(30);
gvContacts.Columns[3].Visible = true;
gvContacts.Columns[3].ItemStyle.Width = Unit.Percentage(20);
}
else
{
gvContacts.Columns[2].ItemStyle.Width = Unit.Percentage(50);
gvContacts.Columns[3].Visible = false;
}
}
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes["ID"] = "contact_" + e.Row.Cells[0].Text;
e.Row.Attributes["onclick"] = "javascript:selectRow($(this).attr('id').replace('contact_',''),2);";
e.Row.Attributes["ondblclick"] = "javascript:openContact($(this).attr('id').replace('contact_',''),''); selectRow($(this).attr('id').replace('contact_',''),2);";
//E-mail link
if (e.Row.Cells[4].Text != " ")
{
e.Row.Cells[4].Text = "<a href=\"mailto:" + e.Row.Cells[4].Text + "\">" + e.Row.Cells[4].Text + "</a>";
}
//Birthday highlight
if (e.Row.Cells[6].Text != " ")
{
DateTime dt = Convert.ToDateTime(e.Row.Cells[6].Text);
DateTime now = DateTime.Now;
if (dt.Day == now.Day && dt.Month == now.Month)
{
e.Row.Cells[6].BackColor = System.Drawing.Color.FromArgb(255, 230, 160);
}
}
}
}
Я использую это событие, чтобы настроить отображение определенных полей, а также скрытие столбцов, которые не применяются во время некоторых типов поиска.
Когда я отключу событие, ODS перестает связывать два раза.
Я не могу думать о способе обойти это поведение.
Кто-нибудь еще видит эту проблему или разрабатывает работу?
Сохраняется ли проблема, если вы прокомментируете проблемы с видимостью? – citronas