2009-07-22 7 views
2

スルーラジオボタン私はgridviewからデータを選択しています。ここでは、すべてのラジオボタンを一度に選択できます。実際には、ユーザーができないボタンを1つだけ選択できるようになると、それは発生しません。私の2番目の問題は、特定のラジオボタンを選択しているときに、詳細がテキストボックスに表示されるべきときです。私はItemID、ItemName、Quantity、Rate、Totalフィールドをgridviewに持っています。これらの値はテキストボックスに挿入されているので、すべてのテキストボックスに対応しています。ですから、特定のラジオボタンを選択すると、その詳細は対応するテキストボックスに表示されます。私はこのためのコーディングを行ったが、ラジオボタンを選択してテキストボックスに表示することはできなかった。 Pls誰かがこの問題のコーディングで私を助けます。gridview内のラジオボタンでヘルプが必要

おかげで、 SUMIT

答えて

1

は古典的なマスター/ディテールパターンのような音は、ここを参照してください:

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

2

スミット、 ASP制御を使用し、HTMLコントロールを使用しないでください:

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

私はASP.NETクラスで同様の問題を抱えていましたが、完全に機能するthisチュートリアルに続きました。

+1

+1ました質問からラジオボタンの問題を解決します。しかし、私はあなたの答えの最初の部分であなたが何を意味するかは分かりません。 htmlラジオボタンコントロールの使用に関するアドバイスは(チュートリアルによると)無効であり、サンプルコードはHTMLコントロールではなくASPコントロールのものです。ありがとう、ジェイソン。 –

+0

。私は誤って文言を反転させた。私は私の言いたいことを反映するために私のコメントを編集しました。 –

0

ネットでいくつかの記事を読みましたが、どれも適切ではありませんでした。私は最終的に、HTMLControlsラジオボタンとJavascriptを使用せずに私自身の解決策を見つけました。これは私の要件のために働く。


<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> 

を次のように私のGridViewのHTMLの設定は、次のようにサーバー・コード(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; 
    }