我在类文件中创建一个CheckBoxList,并使用HTMLTextWriter来呈现控件.
我正在使用以下代码将所选值存储在字符串中:
string YrStr = "";
for (int i = 0; i < YrChkBox.Items.Count; i++)
{
if (YrChkBox.Items[i].Selected)
{
YrStr += YrChkBox.Items[i].Value + ";";
}
}
Run Code Online (Sandbox Code Playgroud)
我逐步完成了代码,它似乎没有触及if语句的内部,并且每次选中的value属性都是false ...任何人都知道如何解决这个问题?
我使用以下内容填充它:
YrChkBox.Items.Add(new ListItem("Item 1", "Item1"));
Run Code Online (Sandbox Code Playgroud) 使用此处问题中显示的方法,我可以从我的获取所选项目值CheckBoxList:
var selectedCheckBoxItems = from key in Request.Form.AllKeys
where key.Contains(cbl.ID)
select Request.Form.Get(key);
Run Code Online (Sandbox Code Playgroud)
然后我可以迭代结果:
foreach (var item in selectedCheckBoxItems)
{
}
Run Code Online (Sandbox Code Playgroud)
问题是item只是发布的值,对于复选框,它只是字符串"on".
我需要能够通过索引或其他方法确定哪个项目"打开".
问: 我如何确定适合该项目CheckBoxList的选择,使用Request.Form?
这是我的CheckBoxList定义:
<asp:CheckBoxList runat="server" ID="cblAnimalType" SelectionMode="Multiple" DataTextField="OptionText" DataValueField="OptionId" AutoPostBack="True"/>
Run Code Online (Sandbox Code Playgroud)
项目从后面的代码添加到列表中:
DataTable dt = GetData(SqlGetListOptions, paramList);
cbl.DataSource = dt;
cbl.DataBind();
Run Code Online (Sandbox Code Playgroud)
另一个要知道的重要事情是ViewStateMode="Disabled",所以我必须Request.Form用来获取所选项目.
在回复评论时,以下是CheckBoxList的HTML呈现方式:
@Leopard指出他看到HTML中呈现的值在我的情况下没有发生.AdamE对这个问题的回答解释了原因.我在web.config中有以下行:
<pages validateRequest="false" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
Run Code Online (Sandbox Code Playgroud)
这解释了为什么我看到"开"而不是所选项的实际值.我无法在没有验证它会破坏其他内容的情况下从web.config中提取兼容性,但似乎如果可以安全删除该设置,则可以从代码隐藏中访问复选框列表值.
我试图使用Linq查询在下拉列表控件中查找和设置所选值.
Dim qry = From i In ddlOutcome.Items _
Where i.Text.Contains(value)
Dim selectedItem As ListItem = qry.First
ddlOutcome.SelectedValue = selectedItem.Value
Run Code Online (Sandbox Code Playgroud)
即使文档说DropDownList.Items集合实现IEnumerable,我在Where子句中得到一个错误,Option Strict ON不允许后期绑定!
我正在开发一个asp.net项目,其中我有一个我已经绑定的复选框列表
DataTable dt = new Process_Hotels().SelectAllFacilty();
if (dt.Rows.Count > 0)
{
cblHotelFacility.DataSource = dt;
cblHotelFacility.DataTextField = "Facility";
cblHotelFacility.DataValueField = "ID";
cblHotelFacility.DataBind();
foreach (ListItem li in cblHotelFacility.Items)
{
li.Attributes.Add("JSvalue", li.Value);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想在按钮点击时使用javascript获取checkboxlist的选定值ID.因为我在按钮上有以下javascript代码点击:
<script type="text/javascript">
function test() {
var checkList1 = document.getElementById('<%= cblHotelFacility.ClientID %>');
var checkBoxList1 = checkList1.getElementsByTagName("input");
var checkBoxSelectedItems1 = new Array();
for (var i = 0; i < checkBoxList1.length; i++) {
if (checkBoxList1[i].checked) {
checkBoxSelectedItems1.push(checkBoxList1[i].value);
//alert('checked:' + checkBoxSelectedItems1.push(checkBoxList1[i].getAttribute("JSvalue")).value);
alert('checked - : ' + checkBoxList1[i].value)
}
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
但点击按钮所选复选框列表显示0.我想获取所选复选框列表项的ID.请帮忙.