问题描述
这样写会发生隔一行数据绑定不上DropDownListUserddl=(DropDownList)e.Row.FindControl("JJY");if(e.Row.RowState==DataControlRowState.Edit){if(e.Row.RowType==DataControlRowType.DataRow){DataSetUsersDs=userbll.GetAllUsers();Userddl.DataSource=UsersDs.Tables[0];Userddl.DataTextField="UserName";Userddl.DataValueField="UserID";Userddl.DataBind();Userddl.Items.Insert(0,newListItem("请选择","0"));Userddl.SelectedValue=((HiddenField)e.Row.FindControl("HidJJY")).Value;}if(Userddl.SelectedValue==""&&(DropDownList)e.Row.FindControl("JJY")!=null){if(e.Row.RowType==DataControlRowType.DataRow){DataSetUsersDs=userbll.GetAllUsers();Userddl.DataSource=UsersDs.Tables[0];Userddl.DataTextField="UserName";Userddl.DataValueField="UserID";Userddl.DataBind();Userddl.Items.Insert(0,newListItem("请选择","0"));Userddl.SelectedValue=((HiddenField)e.Row.FindControl("HidJJY")).Value;}}elseif(Userddl.SelectedIndex!=0&&(DropDownList)e.Row.FindControl("JJY")!=null){if(e.Row.RowType==DataControlRowType.DataRow){DataSetUsersDs=userbll.GetAllUsers();Userddl.DataSource=UsersDs.Tables[0];Userddl.DataTextField="UserName";Userddl.DataValueField="UserID";Userddl.DataBind();Userddl.SelectedValue=((HiddenField)e.Row.FindControl("HidJJY")).Value;//未将对象引用设置到对象的实例。}}}else{if(e.Row.RowState==DataControlRowState.Edit){if(Userddl.SelectedIndex!=0&&(DropDownList)e.Row.FindControl("JJY")!=null){if(e.Row.RowState==DataControlRowState.Selected){DataSetUsersDs=userbll.GetAllUsers();Userddl.DataSource=UsersDs.Tables[0];Userddl.DataTextField="UserName";Userddl.DataValueField="UserID";Userddl.DataBind();Userddl.SelectedValue=((HiddenField)e.Row.FindControl("HidJJY")).Value;//未将对象引用设置到对象的实例。}}}}
解决方案
解决方案二:
求高手指点,急啊
解决方案三:
你这个代码混乱的把眼睛都看花了……就看见同样的一段代码在反复的执行
解决方案四:
引用2楼starfd的回复:
你这个代码混乱的把眼睛都看花了……就看见同样的一段代码在反复的执行
要是能执行的话我就不做那么多判断了,所以我就只能把所有可能的判断全写上了,好多判断都是false,所以就只能这样了,有好的方法的话还请大神讲讲
解决方案五:
出现的问题就和上面两张图一样,一个dropdownlist里面有值,另一个没有值,也就是说另一个的数据绑定没有绑定,断点也没有找到具体的原因
解决方案六:
你为啥要判断if(e.Row.RowState==DataControlRowState.Edit)这个呢,而且你的ifelse里面都是判断你的这个,你没发觉else里面的if永远进不去吗?你就只要下面这段看什么结果if(e.Row.RowType==DataControlRowType.DataRow){DropDownListUserddl=(DropDownList)e.Row.FindControl("JJY")asDropDownList;if(Userddl!=null){DataSetUsersDs=userbll.GetAllUsers();Userddl.DataSource=UsersDs.Tables[0];Userddl.DataTextField="UserName";Userddl.DataValueField="UserID";Userddl.DataBind();Userddl.Items.Insert(0,newListItem("请选择","0"));Userddl.SelectedValue=((HiddenField)e.Row.FindControl("HidJJY")).Value;}}
解决方案七:
引用5楼starfd的回复:
你为啥要判断if(e.Row.RowState==DataControlRowState.Edit)这个呢,而且你的ifelse里面都是判断你的这个,你没发觉else里面的if永远进不去吗?你就只要下面这段看什么结果if(e.Row.RowType==DataControlRowType.DataRow){DropDownListUserddl=(DropDownList)e.Row.FindControl("JJY")asDropDownList;if(Userddl!=null){DataSetUsersDs=userbll.GetAllUsers();Userddl.DataSource=UsersDs.Tables[0];Userddl.DataTextField="UserName";Userddl.DataValueField="UserID";Userddl.DataBind();Userddl.Items.Insert(0,newListItem("请选择","0"));Userddl.SelectedValue=((HiddenField)e.Row.FindControl("HidJJY")).Value;}}
Userddl.SelectedValue=((HiddenField)e.Row.FindControl("HidJJY")).Value;这句话会报错,未将对象引用设置到对象的实例。
解决方案八:
那你先把这段去掉,然后你这个HidJJY到底什么情况下才会有?
解决方案九:
引用7楼starfd的回复:
那你先把这段去掉,然后你这个HidJJY到底什么情况下才会有?
这行去掉绑定正常,但是默认成数据库中的值就不能实现了。这个HidJJY在编辑的状态时才会有用,为了让dropdownlist的默认值为数据库中的数据,所以才添加的这个控件。
解决方案十:
if(e.Row.RowType==DataControlRowType.DataRow){DropDownListUserddl=(DropDownList)e.Row.FindControl("JJY")asDropDownList;if(Userddl!=null){DataSetUsersDs=userbll.GetAllUsers();Userddl.DataSource=UsersDs.Tables[0];Userddl.DataTextField="UserName";Userddl.DataValueField="UserID";Userddl.DataBind();Userddl.Items.Insert(0,newListItem("请选择","0"));HiddenFieldhd=e.Row.FindControl("HidJJY")asHiddenField;if(hd!=null){Userddl.SelectedValue=hd.Value;}}}