DataList的模板列中绑定了一个UpdatePanel,UpdatePanel中有一个CheckBox和一个Label,怎么实现?
我先是DataList里套了一个DataList,又在里层DataList的模板列中绑定了一个UpdatePanel,UpdatePanel中有一个CheckBox和一个Label,要实现当某个CheckBox被点击后后面的Label显示“已选中”或“已删除”,我自己试着做了,但是结果不算我点哪个CheckBox,都是在最后一个记录里响应,头痛。
下面是代码:
apsx文件里的内容:
<asp:DataList runat="server" ID="parametertypedatalist" RepeatColumns="1"
onitemdatabound="parametertypedatalist_ItemDataBound">
<ItemTemplate>
<div><%# DataBinder.Eval(Container.DataItem,"phoneparametertype_name") %><asp:HiddenField runat="server" ID="parametertypeidhidden" Value='<%# DataBinder.Eval(Container.DataItem,"phoneparametertype_id") %>' /></div>
<div>
<asp:DataList runat="server" ID="parameter1list" OnItemDataBound="parameter1list_ItemDataBound">
<ItemTemplate>
<asp:UpdatePanel runat="server" ID="checkpanel" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:CheckBox runat="server" ID="parameter1check"
Text='<%# Bind("phoneparameter1_name") %>' AutoPostBack="true"
oncheckedchanged="parameter1check_CheckedChanged"/><asp:HiddenField runat="server" ID="parameter1value" Value='<%# Bind("phoneparameter1_id") %>' /><asp:Label runat="server" ID="oklabel" ForeColor="Green" Visible="false">OK!</asp:Label></ContentTemplate></asp:UpdatePanel>
</ItemTemplate>
</asp:DataList>
</div>
</ItemTemplate>
</asp:DataList>
下面是.aspx.cs里的部分代码:
protected void parametertypedatalist_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataList dl = (DataList)(e.Item.FindControl("parameter1list"));
HiddenField hf = (HiddenField)(e.Item.FindControl("parametertypeidhidden"));
string typeid = hf.Value;
CommodityLogic commoditylogic = new CommodityLogic();
DataTable dt = commoditylogic.SelectPhoneParameter1ByParameterTypeIdFromView(typeid);
dl.DataSource = dt;
dl.DataBind();
}
}
protected void parameter1check_CheckedChanged(object sender, EventArgs e)
{
string phoneid = Request.QueryString["phoneid"].ToString();
string parameterid = parameter1value.Value;
CommodityLogic commoditylogic = new CommodityLogic();
lnteleshop.Model.Reporter reporter = new lnteleshop.Model.Reporter();
if (parameter1check.Checked)
{
//选中,表示要添加新记录
DataTable dt = commoditylogic.SelectPhoneParameter1ItemByPhoneIdAndParameterId(phoneid, parameterid);
if (dt.Rows.Count == 0)
{
reporter = commoditylogic.InsertPhoneParameter1Item(phoneid, parameterid, null);
}
}
else
{
reporter = commoditylogic.DeletePhoneParameter1ItemByPhoneIdAndParameterId(phoneid, parameterid);
}
if (reporter.BoolResult)
{
oklabel.Visible = true;
oklabel.Text = "OK!";
oklabel.ForeColor = System.Drawing.Color.Green;
}
else
{
oklabel.Visible = true;
oklabel.Text = reporter.StringMessage;
oklabel.ForeColor = System.Drawing.Color.Red;
}
}
运行结果里嵌套绑定都正常了。