我已经检查了所有答案,但我的问题似乎有所不同 - 我有两套复选框列表。启动时,我禁用第二组中的所有复选框。
rotected void exchList_OnDataBound(object sender, EventArgs e)
{
for (int i = 0; i < exchList.Items.Count; i++)
{
exchList.Items[i].Attributes.Add("onclick", "gridCallback();");
exchList.Items[i].Enabled = false;
}//end for
}//end exchList_OnDataBound()
选中第一组中的方框可启用另一方框。这是通过jquery完成的。
$('#<%= exchList.ClientID %> input:checkbox').each(function() {
$label = $(this).parent().children("label").text();
i = 0;
while(i < $jsonData.xxx.length)
{
if ($(this).attr('disabled'))
{
$(this).removeAttr('disabled');
$(this).attr('checked', 'checked');
}//end if
else
{
$(this).removeAttr('checked');
$(this).attr('disabled', 'disabled');
}//end else
i++;
}//end while
});
当要检查的方框时,在回调期间无法检测到它。
protected void productGrid_OnCustomCallback(object sender,
DevExpress.Web.ASPxGridView.ASPxGridViewCustomCallbackEventArgs e)
{
String markets = "", exchs = "";
int i;
for (i = 0; i < marketList.Items.Count; i++)
{
if (marketList.Items[i].Selected)
System.Diagnostics.Debug.WriteLine(marketList.Items[i].Text);
}//end for
for (i = 0; i < exchList.Items.Count; i++)
{
System.Diagnostics.Debug.WriteLine(exchList.Items[i].Text + " " + exchList.Items[i].Enabled);
}//end for
}//end productGrid_OnCustomCallback()
即使清楚地选中复选框,也始终不会检查它们。查看firebug显示,因为我禁用并启用了列表项,复选框由DIV封装,这可能导致问题。我在没有禁用/启用的情况下测试了它,并且HTML没有围绕复选框的DIV,现在它正常工作。如何从listitem中获取DIV中的复选框选中值?
答案 0 :(得分:1)
如果我没记错的话,那就是ASP.net控件的某种错误,如果在页面加载时禁用了复选框,它总是以未选中状态返回,即使你启用它并在客户端检查它。
解决方法是从服务器端发送启用的复选框,并在客户端加载时禁用它们(如有必要)。
恕我直言,一个令人满意的解决方案当然是根本不使用ASP.net控件,因为我发现它们过于复杂和超重。但是,嘿 - 那只是我...
答案 1 :(得分:-1)
尝试使用checkboxlist使用的这些代码。它使用2页。没有jscript代码..希望这有帮助。 第1页cs代码。
Session["checkedarray"] = new string[] { "1.0", "2.0", "3.0" };
{
{
string[] checkedlist = new string[17];
int a = 0;
for (int i = 0; i <= 16; i++)
{
if (cblist1.Items[i].Selected == true)
{
checkedlist[a] = cbllist1.Items[i].ToString();
a = a + 1;
}
}
Session["checkedarray"] = checkedlist;
Session["numofchecked"] = a;
Response.Redirect("ReportPage2.aspx");
}
}
第2页cs代码。
protected void Page_Load(object sender, EventArgs e)
{
string[] arr = (string[])Session["checkedarray"];
for (int i = 0; i < int.Parse(Session["numofchecked"].ToString()); i++)
{
ColcbList2.Items.Add(arr[i].ToString());
}
}