gpt4 book ai didi

c# - 如何阻止我的 ObjectDataSource 绑定(bind)两次?

转载 作者:行者123 更新时间:2023-11-30 22:43:41 26 4
gpt4 key购买 nike

这已经被讨论过几次,但没有合适的答案:

  1. ObjectDataSource firing twice, or on its own
  2. ObjectDataSource created twice when control is changed

我创建了一个与 ObjectDataSource 一起使用的自定义分页数据类。在初始测试中,我发现它的性能比我的旧 SqlDataSource 代码差。在调查过程中,我发现对于每次页面加载,都会创建和绑定(bind)两次 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 != "&nbsp;")
{
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 停止绑定(bind)两次。

我实在想不出解决此问题的方法。

有没有其他人看到这个问题或制定了解决方法?

最佳答案

为什么要更改 RowDataBound 事件中列的可见性?将为您绑定(bind)的每个项目调用此事件。

在实际对 GridView 执行 DataBind() 调用之前隐藏列。

如果这对您没有帮助,您将需要提供用于数据绑定(bind)的代码。

关于c# - 如何阻止我的 ObjectDataSource 绑定(bind)两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3831811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com