【问题标题】:Need help in radiobutton within gridview在gridview中的单选按钮中需要帮助
【发布时间】:2010-11-13 00:56:34
【问题描述】:

通过单选按钮,我正在从 gridview 中选择数据。在这里,所有单选按钮都可以一次选择。实际上它不应该发生在用户只能选择一个我不能做的按钮时。我的第二个问题是当我选择特定的单选按钮时,应在文本框中显示详细信息。我在 gridview 中有 Itemid、ItemName、Quantity、Rate 和 Total 字段。我通过文本框插入了这些值,因此我拥有所有相应的文本框。因此,一旦我选择特定的单选按钮,这些详细信息应显示在相应的文本框中。我已经为此完成了插入编码,但无法通过单选按钮选择并在文本框中显示。请有人帮我解决这个问题。

谢谢, 顶

【问题讨论】:

    标签: asp.net gridview radio-button


    【解决方案1】:

    苏米特, 不要用html控件,用asp控件:

    <asp:RadioButton ID="RadioSelector" runat="server" GroupName="RadioSelectors" />
    

    我在 ASP.NET 课程中遇到了类似的问题,我遵循了 this 教程,效果很好。

    【讨论】:

    • 教程+1,它确实解决了问题中的单选按钮问题。但是,我不确定您在答案的第一部分中的意思。您使用 html 单选按钮控件的建议无效(根据教程),并且您的示例代码是 ASP 控件,而不是 HTML 控件。
    • 谢谢,杰森。我错误地翻转了措辞。我已经编辑了我的评论以反映我的意思。
    【解决方案2】:

    听起来像是经典的主/细节模式,请参见此处:

    Tutorial 10: Master/Detail Using a Selectable Master GridView with a Details DetailView

    您正在使用单选按钮与 ASP.NET 数据绑定控件的预期工作作斗争。我不喜欢选择链接,它们也不完全是 Web 2.0!但是通过这样做(或相同的变体)可以很容易地用行点击替换它们:

    Select a row in an asp:GridView without using a Select Command

    【讨论】:

      【解决方案3】:

      我在网上阅读了几篇文章,但没有一篇是合适的。我终于找到了自己的解决方案,既不使用 HTMLControls 单选按钮也不使用 Javascript。这符合我的要求。


      我的 Gridview html 设置如下

          <asp:GridView ID="grdVersion" runat="server" 
              AutoGenerateColumns="false" AllowPaging="true"
              AutoGenerateEditButton="false" PageSize="10" Width="400px" 
              EmptyDataText="No records available."
              OnRowDataBound="grdVersion_RowDataBound"
              AutoGenerateSelectButton="false">
              <Columns>
                  <asp:BoundField DataField="versionid" HeaderText="Version No." ItemStyle-Width="50px"
                      ItemStyle-Wrap="false" HtmlEncode="true" ReadOnly="true" />
                  <asp:BoundField DataField="version_date" HeaderText="Version Date" ItemStyle-Width="100px"
                      ItemStyle-Wrap="false" HtmlEncode="true" ReadOnly="true" />
                  <asp:BoundField DataField="remarks" HeaderText="Remarks" ItemStyle-Width="150px"
                      ItemStyle-Wrap="true" HtmlEncode="true" ReadOnly="true" />
      
                  **<asp:TemplateField HeaderText="Admin" HeaderStyle-Width="100px">
                      <ItemTemplate>
                          <asp:RadioButton ID="rdCurrent" runat="server" 
                          Checked="false" Enabled="true" GroupName="rgVersion" 
                          AutoPostBack="true" 
                          OnCheckedChanged="rdCurrent_CheckChanged" />
                      </ItemTemplate>**
      
                   </asp:TemplateField>
              </Columns>
          </asp:GridView>
      

      服务器代码(C#)如下,

         DataTable dtDataSpaceVersions; //place this inside the codebehind page class
         protected void Page_Load(object sender, EventArgs e)
          {
              if (!Page.IsPostBack)
              {
                  dtDataSpaceVersions = ListDataSpaceVersions();
                  ViewState["dtDataSpaceVersions"] = dtDataSpaceVersions;
      
                  PopulateGridVersion();
              }
          }
      
          protected void PopulateGridVersion()
          {
              grdVersion.DataSource = dtDataSpaceVersions;
              grdVersion.DataBind();
          }
      
      
      
          protected void rdCurrent_CheckChanged(object sender, EventArgs e)
          {
      
              Control selectedVersion = ((Control)sender).Parent;
      
              if (ViewState["dtDataSpaceVersions"] != null)
                  dtDataSpaceVersions = (DataTable)ViewState["dtDataSpaceVersions"];
      
              foreach (DataRow dtr in dtDataSpaceVersions.Rows)
              {
                  if (dtr["versionid"].ToString() == ((System.Web.UI.WebControls.GridViewRow)selectedVersion.Parent).Cells[0].Text)
                      dtr[3] = "Y";
                  else
                      dtr[3] = "N";
              }
              PopulateGridVersion();
          }
      
      
          protected void grdVersion_RowDataBound(object sender, GridViewRowEventArgs e)
          {
      
              DataRowView drv;
              if (e.Row.RowType == DataControlRowType.DataRow && e.Row.DataItem != null)
              {
                  drv = (DataRowView)e.Row.DataItem;
                  if ((RadioButton)(e.Row.FindControl("rdCurrent")) != null)
                      if (drv.Row.ItemArray[3].ToString() == YesNo.N.ToString())
                          ((RadioButton)(e.Row.FindControl("rdCurrent"))).Checked = false;
                      else
                          ((RadioButton)(e.Row.FindControl("rdCurrent"))).Checked = true;
      
                  //setGridUserPermissionCheckBoxState(e.Row, drv);
              }
          }
      
      
         public DataTable ListDataSpaceVersions()
          {
              string sql = string.Empty;
              DataTable dt = new DataTable();
              dt.Columns.Add("versionid", typeof(String));
              dt.Columns.Add("version_date", typeof(String));
              dt.Columns.Add("remarks", typeof(String));
              dt.Columns.Add("is_current", typeof(String));
      
              DataRow dtr;
              dtr = dt.NewRow();
              dtr[0] = "1.1";
              dtr[1] = "12-Dec-2005";
              dtr[2] = "Campaign Information";
              dtr[3] = "N";
              dt.Rows.Add(dtr);
      
              dtr = dt.NewRow();
              dtr[0] = "1.2";
              dtr[1] = "06-Mar-2006";
              dtr[2] = "Sales corrections";
              dtr[3] = "N";
              dt.Rows.Add(dtr);
      
              dtr = dt.NewRow();
              dtr[0] = "1.3";
              dtr[1] = "24-Aug-2009";
              dtr[2] = "Invoice reconciliation";
              dtr[3] = "Y";
              dt.Rows.Add(dtr);
      
              dtr = dt.NewRow();
              dtr[0] = "1.4";
              dtr[1] = "30-May-2010";
              dtr[2] = "Invoices verification";
              dtr[3] = "N";
              //dtr[0][0] = "";
      
              dt.Rows.Add(dtr);
              return dt;
          }
      

      【讨论】:

        猜你喜欢
        • 2013-02-24
        • 2011-09-02
        • 1970-01-01
        • 1970-01-01
        • 2013-10-09
        • 1970-01-01
        • 1970-01-01
        • 2012-03-23
        • 1970-01-01
        相关资源
        最近更新 更多