我有一个数据列表包含复选框列表。
<asp:DataList ID="dtlstfilter" runat="server">
<ItemTemplate>
<asp:CheckBoxList ForeColor="Gray" AutoPostBack="true" OnSelectedIndexChanged="chklist_SelectedIndexChanged" ID="chklist"
runat="server">
</asp:CheckBoxList>
</ItemTemplate>
</asp:DataList>
当我从SelectedIndexChanged事件的复选框列表中选中一个时,我使用
获得了所选值CheckBoxList c = (CheckBoxList)sender;
string selectedvalue= c.SelectedValue;
同样如果我从复选框列表中取消选中
,如何从复选框列表中获取值答案 0 :(得分:0)
如果取消选中SelectedIndexChanged
,CheckBox
也会被触发。所以它的工作方式相同。但是如果你想知道(现在)未经检查的项目,你必须将旧的选择存储在某个地方,例如ViewState
:
private IEnumerable<string> SelectedValues
{
get
{
if (ViewState["SelectedValues"] == null && dtlstfilter.SelectedIndex >= -1)
{
ViewState["SelectedValues"] = dtlstfilter.Items.Cast<ListItem>()
.Where(li => li.Selected)
.Select(li => li.Value)
.ToList();
}else
ViewState["SelectedValues"] = Enumerable.Empty<string>();
return (IEnumerable<string>)ViewState["SelectedValues"];
}
set { ViewState["SelectedValues"] = value; }
}
protected void chklist_SelectedIndexChanged(Object sender, EventArgs e)
{
CheckBoxList c = (CheckBoxList)sender;
var oldSelection = this.SelectedValues;
var newSelection = c.Items.Cast<ListItem>()
.Where(li => li.Selected)
.Select(li => li.Value);
var uncheckedItems = newSelection.Except(oldSelection);
}
如果可以选择多个复选框,这甚至可以工作。
答案 1 :(得分:0)
如果适合你,可以使用jQuery Route ...
if (!IsPostBack)
{
foreach (ListItem item in chkList.Items)
{
//adding a dummy class to use at client side.
item.Attributes.Add("class", "chkItem");
}
}
在表单上放置一个带有样式显示的按钮:无。还有一个隐藏字段来跟踪当前选中的复选框。
<asp:Button ID="hdnButton" runat="server" style="display:none;" OnClick="hdnButton_Click"/>
<asp:HiddenField ID="hdnCurrent" runat="server" />
jQuery Part ....
$(".chkItem input:checkbox").change(function(){
$("#hdnCurrent").val($(this).attr("id") + "|" + $(this).attr("checked"));
$("#hdnButton").click();
});
如果您不想在后端执行字符串操作,则可以使用更多隐藏字段。取决于你的口味。
然后处理按钮点击事件,如下所示。
protected void hdnButton_Click(object sender, EventArgs e)
{
String[] Value = hdnCurrent.Value.Split('|');
if (Value[1] == "true")
{
//Do operations here when the check box is checked
}
else
{
//Do operations here when the check box is unchecked
}
//Value[0] contains the id of the check box that is checked/unchecked.
}