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
问题是,一旦我更新了数据列表,我就会在其他Datalist控件中松开颜色变化.... 有什么方法可以让所有数据主义者重新绑定吗?更新任何datalist中的记录后重新加载页面?
如果我插入新行/更新令人兴奋的行,删除行意味着gridview必须自动刷新。我要做什么//?....
答案 0 :(得分:0)
在回发期间,如果未调用.DataBind(),则不会重新触发ItemDataBound事件。当您从viewstate / controlstate加载项目时,没有ItemDataBound导致没有着色。
首先,我会删除你的Item_DataBound并创建一个例程,遍历每个列表并设置所需的颜色。我会在预渲染上调用它。
另一个选择是在加载页面后在客户端上使用jquery / javascript,使用样式和css做基本相同的事情。
您可能会得到希望将每个列表包装在ajax“更新面板”中的结果,但这会使您的页面膨胀并降低性能成本。
答案 1 :(得分:0)
您可以将页面的DataList部分放在更新面板中,如:
<asp:ScriptManager runat="server"/>
<asp:UpdatePanel runat="server">
<contentTemplate>
<!-- Your content Here -->
</contentTemplate>
</asp:UpdatePanel>
这绝对可以解决你的问题。