首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

datalist嵌套datalist,checkbox无法选中有关问题

2012-01-05 
datalist嵌套datalist,checkbox无法选中问题datalist嵌套datalist,里层datalist中有控件checkbox,代码选中

datalist嵌套datalist,checkbox无法选中问题
datalist嵌套datalist,里层datalist中有控件checkbox,代码选中checkbox却不能实现,都说要在内层的datalist再绑定次,我也绑定了却不起作用,大家帮忙看下啊!

[解决办法]
用js写check看看
for (int i = 0; i < dlTypeList.Items.Count; i++)
{
DataList dlWeightList = (DataList)dlTypeList.Items[i].FindControl( "dlWeightList ");
for (int j = 0; j < dlWeightList.Items.Count; j++)
{
ClientScript.RegisterStartupScript(this.GetType(), " ", " <script> document.getElementById( 'ckb ').check = true ; </script> ");

CheckBox ckb = (CheckBox)dlWeightList.Items[j].FindControl( "ckb ");

ckb.Checked = true;

int Dimension_ID = int.Parse(dlWeightList.DataKeys[j].ToString());
InitdltDimension(dlWeightList, Dimension_ID);//重新绑定
}
}

[解决办法]
用 javascript 和隐藏INPUT 来处理选中的Checkbox对应的记录ID

[解决办法]
eg:
嵌套的DataList里面放一个:
<input type= "checkbox " runat= "server " id= "checkbox1 " onclick= "clickBox() ">

嵌套的DataList绑定时:
private void DataList2_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
HtmlInputCheckBox chk = e.Item.FindControl( "checkbox1 ") as HtmlInputCheckBox;
if(chk != null)
{
DataRowView dr = e.Item.DataItem as DataRowView;
if(dr != null)
chk.Attributes.Add( "sublistid ", "sub_ " + dr[ "IntegerValue "].ToString());
}
}
}
[解决办法]
<asp:datalist id= "DataList1 " runat= "server " width= "100% ">
<itemtemplate>
<div> <%# DataBinder.Eval(Container.DataItem, "IntegerValue ") %> </div>
<hr width= "100% ">
<asp:datalist id= "DataList2 " runat= "server " width= "100% ">
<itemtemplate>
<hr width= "50% ">
<div> <%# DataBinder.Eval(Container.DataItem, "DateTimeValue ") %> : <input type= "checkbox " runat= "server " id= "checkbox1 " onclick= "clickBox() ">
checkbox
</div>
</itemtemplate>
</asp:datalist>
</itemtemplate>
</asp:datalist>

<script language= "javascript ">
<!--
function clickBox()
{
var obj = event.srcElement;
//sublistid= "sub_6 "
if(obj.checked)
alert( obj.getAttribute( "sublistid ") );
}
//-->
</script>

把选中的Checkbox的自定义属性sublistid的值保存到下来,POST后就可以处理了

[解决办法]
如果你想让checkbox选中,那么“ ckb.Checked = true;”应该在整个页面的page_load事件之后的事件中执行。如果你的代码是在page_load 事件中或者之前执行的,好好考虑的你的逻辑。page_load是用来恢复上一个页面处理过程中的状态的,不是用来设置本次页面处理过程的状态的。



如果哪个客户端操作触发的业务逻辑需要设置一些 ckb.Checked,就在这个操作对应的事件中处理,例如在按钮对应的事件中处理。如果肯定需要设置一些 ckb.Checked,而与客户端操作无关,就在 Prerender 事件中处理。总之,这些业务逻辑应该是写在页面的 page_load 之后的,不要写在 page_load 事件中处理。

热点排行