如题目:
具体环境描述
前台页面
<asp:DataGrid....>
<asp:TemplateColumn HeaderText="性 别">
<ItemTemplate>
<asp:RadioButtonList id="cblSex" Runat="server" RepeatDirection="Horizontal">
<asp:ListItem Value="0">女</asp:ListItem>
<asp:ListItem Value="1">男</asp:ListItem>
</asp:RadioButtonList>
</ItemTemplate>
</asp:TemplateColumn>
</DataGrid>
如果我选定了 RadioButtonList 的值,那么在 ItemDataBound 事件中我能获得吗?
请大家仔细测试过回答下,因为我采用下面的方法跟踪后,得到的值始终是空的。
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.SelectedItem)
或者
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
后获得控件
RadioButtonList cblSex = (RadioButtonList)e.Item.FindControl("cblSex");
之后 在命令窗口 键入
cblSex.SelectedValue
返回的值 始终为 ""
谢谢大家

解决方案 »

  1.   

    方法有两种 自己找到的,想来拿分的快近来看看。
    1) DataRowView 的使用 
    这次主要是参考了 OA 代码中的 DataRowView,然后受到启发才做出想要的效果。
    [所以现在的学习已经不是使用熟练不熟练的问题,每天都能接触并学习到更深入的知识,我感到很高兴。]
    RadioButtonList cblSex = (RadioButtonList)e.Item.FindControl("cblSex");

    if(((DataRowView)(e.Item.DataItem))["dcSex"].ToString() == "0")
    {
    cblSex.Items[0].Selected = true;
    }
    else
    {
    cblSex.Items[1].Selected = true;
    }2)使用前提:这里是在 _ItemDataBound 中绑定数据后才使用这样的方法的。 ((DropDownList)e.Item.FindControl("mddlSubjectTermsClassName")).Items.
    FindByText(DataBinder.Eval(e.Item.DataItem, "tSubjectTermsClassName").ToString()).Selected = true;
      

  2.   

    相信你是選擇后然後postback,然後查看你選擇的值!(你不可能頁面未加載就選擇,如果是這樣那就不叫選擇,是你指定植了,你給出的兩個解決方法就是指定植。)post back時 ItemDataBind事件在pageLoad事件之前,此時你所個性選擇的viewstate數據還未加載進控件,也就是你所選擇的數據會在itemDataBind之後邦定到控件,那麽你選擇的淡然是 "";-----
    如果要取你所選擇的值就在別的事件中取。
      

  3.   

    你的DataBind()是不是没有在if(!IsPostBack)里面亚?这就会引起你说的错误!
      

  4.   

    if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
       {
        DropDownList d=new DropDownList();
        d=(DropDownList)e.Item.Cells[6].Controls[0].FindControl("change_ddl");
        ………………
       }