.net Web程序的CheckBox Server控件没有Value属性。可是如果把CheckBox放到DataList里面就很需要让CheckBox的Texe属性显示名称,而Value属性显示Id。
这个问题的一个解决方法是在DateList里面再放一个 HiddenField服务器控件,用来存放Id。
这个问题的一个解决方法是在DateList里面再放一个 HiddenField服务器控件,用来存放Id。
aspx的解决办法
<asp:DataList ID="DataList1" runat="server" RepeatColumns="3"
Style="vertical-align: top;">
<ItemTemplate>
<div style="text-align: right; padding-right: 10px; width:190px;">
<asp:CheckBox ID="chkAdvice" runat="server"
CssClass="fromgrid" Text='<%# DataBinder.Eval(Container, "DataItem.AdviceName") %>'
TextAlign="Left" />
<asp:HiddenField ID="hidAdvice" Value='<%# DataBinder.Eval(Container, "DataItem.DrsAdviceId") %>' runat="server" />
</div>
</ItemTemplate>
</asp:DataList>
Style="vertical-align: top;">
<ItemTemplate>
<div style="text-align: right; padding-right: 10px; width:190px;">
<asp:CheckBox ID="chkAdvice" runat="server"
CssClass="fromgrid" Text='<%# DataBinder.Eval(Container, "DataItem.AdviceName") %>'
TextAlign="Left" />
<asp:HiddenField ID="hidAdvice" Value='<%# DataBinder.Eval(Container, "DataItem.DrsAdviceId") %>' runat="server" />
</div>
</ItemTemplate>
</asp:DataList>
在服务器端可以这样来取得名称和Id
.cs的解决办法
foreach (DataListItem item in DataList1.Items)
{
CheckBox chkAdvice = item.FindControl("chkAdvice") as CheckBox;
HiddenField hid = item.FindControl("hidAdvice") as HiddenField;
bool checked = chkAdvice.Checked;
string id = hid.Value;
}
{
CheckBox chkAdvice = item.FindControl("chkAdvice") as CheckBox;
HiddenField hid = item.FindControl("hidAdvice") as HiddenField;
bool checked = chkAdvice.Checked;
string id = hid.Value;
}
可是今天突然想能不能不放那个HiddenField呢?于是尝试把Id放到CheckBox的Style里面,寒。
.aspx的解决办法
<asp:DataList ID="DataList1" runat="server" RepeatColumns="5" RepeatLayout="Table"
Style="vertical-align: top;">
<ItemTemplate>
<div style="text-align: right; padding-right: 30px;">
<asp:CheckBox ID="chkAdvice" runat="server"
CssClass="fromgrid" Text='<%# DataBinder.Eval(Container, "DataItem.AdviceName") %>'
style='<%# "aaa:" + DataBinder.Eval(Container, "DataItem.DrsAdviceId") %>'
TextAlign="Left" />
</div>
</ItemTemplate>
</asp:DataList>
Style="vertical-align: top;">
<ItemTemplate>
<div style="text-align: right; padding-right: 30px;">
<asp:CheckBox ID="chkAdvice" runat="server"
CssClass="fromgrid" Text='<%# DataBinder.Eval(Container, "DataItem.AdviceName") %>'
style='<%# "aaa:" + DataBinder.Eval(Container, "DataItem.DrsAdviceId") %>'
TextAlign="Left" />
</div>
</ItemTemplate>
</asp:DataList>
在服务器端可以这样取得Id的值
.cs的解决办法:
foreach (DataListItem item in DataList1.Items)
{
CheckBox chkAdvice = item.FindControl("chkAdvice") as CheckBox;
string id = chkAdvice.Style["aaa"];
}
{
CheckBox chkAdvice = item.FindControl("chkAdvice") as CheckBox;
string id = chkAdvice.Style["aaa"];
}