【问题标题】:How to Reload the page after Datalist DatabindDatalist Databind后如何重新加载页面
【发布时间】:2011-04-19 03:39:21
【问题描述】:

Asp.net 与 c#

我在我的页面中使用了 16 个 datalist asp.net 控件,我以编程方式定义了每个更新的命令,如下所示:

protected void DataList1_UpdateCommand(object source,
        DataListCommandEventArgs e)
    {

        //This codes repeats for all 16 datalist , diferent naming controls such as DataList2, Datalist3, etc.....


        String categoryID = DataList1.DataKeys[e.Item.ItemIndex].ToString();
        String dp_status = ((DropDownList)e.Item.FindControl("DropDownList1")).SelectedValue;
        //String txt_dept = 


        SqlDataSource1.UpdateParameters["Id"].DefaultValue = categoryID;
        SqlDataSource1.UpdateParameters["Status"].DefaultValue = dp_status;
        // SqlDataSource1.UpdateParameters["Comment"].DefaultValue = ;
        //  SqlDataSource1.UpdateParameters["Census"].DefaultValue = ;

        SqlDataSource1.Update();

        DataList1.EditItemIndex = -1;
        DataList1.DataBind();

    }

 protected void DataList_ItemDataBound(object sender, DataListItemEventArgs e)
    {

        if (e.Item.ItemType == ListItemType.Item ||
          e.Item.ItemType == ListItemType.AlternatingItem)
        {
            DataRowView drv = (DataRowView)(e.Item.DataItem);

            string status = drv.Row["Status"].ToString();
            if (status == "Available")
                e.Item.BackColor = System.Drawing.Color.LightGreen;
            if (status == "Assigned")
                e.Item.BackColor = System.Drawing.Color.LightSteelBlue;
            if (status == "BR")
                e.Item.BackColor = System.Drawing.Color.LightSalmon;

        }

    }//End Nt1 Change Colors

问题是,一旦我更新了一个数据列表,我就会失去其他数据列表控件中的颜色变化...... 有什么办法可以让所有数据列表重新绑定?或在更新任何数据列表中的记录后重新加载页面?

如果我插入新行/更新令人兴奋的行,删除一行意味着 gridview 必须自动刷新。我必须做什么//?....

【问题讨论】:

    标签: c# asp.net asp.net-ajax


    【解决方案1】:

    在回发期间,如果未调用 .DataBind(),则不会重新触发 ItemDataBound 事件。当您的项目从 viewstate/controlstate 加载时,没有 ItemDataBound 不会导致着色。

    在第一次剪切时,我会删除您拥有的 Item_DataBound 并创建一个例程来遍历每个列表并设置所需的颜色。我会在预渲染时调用它。

    另一种选择是在页面加载后在客户端使用 jquery/javascript 来使用样式和 css 执行基本相同的操作。

    您可能会得到想要的结果,将每个列表包装在 ajax“更新面板”中,但这会使您的页面膨胀并降低性能。

    【讨论】:

      【解决方案2】:

      您可以将页面的 DataList 部分放在更新面板中,例如:

       <asp:ScriptManager runat="server"/> 
      
       <asp:UpdatePanel runat="server">
             <contentTemplate>
      
                <!--  Your content Here -->
      
             </contentTemplate>
       </asp:UpdatePanel>  
      

      这绝对可以解决您的问题。

      【讨论】:

        猜你喜欢
        • 2017-07-07
        • 2015-06-24
        • 1970-01-01
        • 2011-09-05
        • 2021-07-31
        • 2011-11-26
        • 2017-10-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多