跪谢大侠们!

解决方案 »

  1.   

    使用模版列 添加RadioButton控件
    <asp:DataGrid id="DataGrid1" runat="server">
    <Columns>
    <asp:TemplateColumn HeaderText="select">
    <ItemTemplate>
    <asp:RadioButton id="RadioButton1" runat="server" GroupName="slt" Text="select"></asp:RadioButton>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:DataGrid>
      

  2.   

    是这样,在DataGrid中加入模板列,然后在模板列中加入Radio(一定要是Html控件)
    命名为Rediobtn.  然后在Page_load中加入如下代码
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    if(!this.IsPostBack)
    {   
    this.SetRadioBtnCheck();


    #region 将RadioBtn设成选中状态
    /// <summary>
    /// 将RadioBtn设成选中状态
    /// </summary>
    private void SetRadioBtnCheck()
    {
    if (Request.QueryString["Rediobtn"] != null)
    {
    System.Text.StringBuilder js = new System.Text.StringBuilder();
    js.Append("<script>\r\n");
    js.Append("function ld(){\r\n");
    js.Append("for(i=0;i<document.getElementsByName('RadioName').length;i++)\r\n");
    js.Append("if(document.getElementsByName('RadioName')[i].value==" +Request.QueryString["Rediobtn"] +")" );
    js.Append("document.getElementsByName('RadioName')[i].checked=true\r\n");
    js.Append("}\r\n");
    js.Append("window.onload=ld\r\n");
    js.Append("</"+"script>\r\n");
    this.RegisterStartupScript("js",js.ToString());
    }

    }
    #endregion
      

  3.   

    <asp:DataGrid id="DataGrid1" runat="server">
    <Columns>
    <asp:TemplateColumn HeaderText="select">
    <ItemTemplate>
    <input onclick="getValue(this);" type="Radio" value='<%#Eval("...")%>' name="Rad">asp:RadioButton>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:DataGrid>
    <input type="hidden" id="hid" runat="server">
    取值用隐藏域
    <script>
    function getValue(item)
    {
    if(item.Checked)
     document.getElementById("hid").value = item.value;
    }</script>
    后台直接访问hid.Value就知道是选了哪个了
      

  4.   

    忘了个很重要的东西,<input type="radio">要加一个name属性,这样才能实现单选。
      

  5.   

    /// <summary>
    /// 添加单选框形式的单选列的输出,列名为radioSelect,形式如下:
    /// <INPUT id="dgSelect" type="radio" name="dgSelect" value="[行号]">
    /// </summary>
    /// <param name="dt"></param>
    public static void AddRadioSelect(ref DataTable dt)
    {
    string strRadio;
    dt.Columns.Add("radioSelect");
    for (int i=0 ;i<dt.Rows.Count;i++)
    {

    strRadio="<INPUT id=\"dgSelect\" type=\"radio\" name=\"dgSelect\" value="+i.ToString().Trim()+">";
    dt.Rows[i]["radioSelect"]=strRadio;
    }
    }/// <summary>
    /// 获取以单选框为选择列的DATAGRID中选中行的记录的GUID
    /// </summary>
    /// <param name="page">所在页面</param>
    /// <param name="dg">DATAGRID</param>
    /// <param name="GUIDCol">GUID所在列</param>
    /// <param name="pagination">是否有分页</param>
    /// <returns>GUID</returns>
    public static string GetSelectedGUID(Page page,DataGrid dg,int GUIDCol,bool pagination)
    {
    try
    {
    int selectedRow = int.Parse(page.Request.Form["dgSelect"].Trim());
    if(pagination)
    {
    selectedRow = selectedRow % dg.PageSize;
    }
    return dg.Items[selectedRow].Cells[GUIDCol].Text;
    }
    catch
    {return null;}
    }别忘了在datagrid里绑定“radioSelect”
      

  6.   

    /// <summary>
    /// 添加单选框形式的单选列的输出,列名为radioSelect,形式如下:
    /// <INPUT id="dgSelect" type="radio" name="dgSelect" value="[行号]">
    /// </summary>
    /// <param name="dt"></param>
    public static void AddRadioSelect(ref DataTable dt)
    {
    string strRadio;
    dt.Columns.Add("radioSelect");
    for (int i=0 ;i<dt.Rows.Count;i++)
    {

    strRadio="<INPUT id=\"dgSelect\" type=\"radio\" name=\"dgSelect\" value="+i.ToString().Trim()+">";
    dt.Rows[i]["radioSelect"]=strRadio;
    }
    }/// <summary>
    /// 获取以单选框为选择列的DATAGRID中选中行的记录的GUID
    /// </summary>
    /// <param name="page">所在页面</param>
    /// <param name="dg">DATAGRID</param>
    /// <param name="GUIDCol">GUID所在列</param>
    /// <param name="pagination">是否有分页</param>
    /// <returns>GUID</returns>
    public static string GetSelectedGUID(Page page,DataGrid dg,int GUIDCol,bool pagination)
    {
    try
    {
    int selectedRow = int.Parse(page.Request.Form["dgSelect"].Trim());
    if(pagination)
    {
    selectedRow = selectedRow % dg.PageSize;
    }
    return dg.Items[selectedRow].Cells[GUIDCol].Text;
    }
    catch
    {return null;}
    }别忘了在datagrid里绑定“radioSelect”
      

  7.   

    补充:
    1 aspx:
    <asp:BoundColumn DataField="radioSelect" ></asp:BoundColumn>
    2绑定:<asp:datagrid id=DataGrid1 runat="server"  DataSource="<%# BJList %>"。public DataTable BJList
    {
    get
    {
    DataTable dt = GetBJList(Label1.Text).Tables[0];
    DataGridHelper.AddRadioSelect(ref dt);
    return dt;
    }
     

    }3 读取选中值:
    string defid=DataGridHelper.GetSelectedGUID(this.Page,this.DataGrid1,0,true,"dgSelect");
      

  8.   

    这一列的radiobutton在客户端的name一致就可以了