2

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

ありがとう、サミット

4

3 に答える 3

2

Sumit、html コントロールを使用しないで、asp コントロールを使用します。

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

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

于 2009-10-21T17:56:39.543 に答える
1

古典的なマスター/ディテール パターンのように聞こえます。こちらを参照してください。

チュートリアル 10: 選択可能なマスター GridView と Details DetailView を使用したマスター/詳細

ラジオ ボタンを使用して、ASP.NET データ バインド コントロールの意図した動作と戦っています。リンクを選択するのは好きではありません。正確には Web 2.0 ではないからです。しかし、これ (または同じバリエーション) を行うことで、行のクリックに簡単に置き換えることができます。

Select コマンドを使用せずに asp:GridView で行を選択する

于 2009-07-22T14:55:02.040 に答える
0

ネットでいくつかの記事を読みましたが、適切なものはありませんでした。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;
    }
于 2010-05-28T13:25:03.433 に答える