GridViewコントロールRowDataBoundイベントでカラムフィールドの値を取得する方法

5876 ワード

フロント:
 <asp:TemplateField HeaderText="    |    ">

                    <ItemTemplate>

                        <asp:Label ID="lblSurplusMoney" runat="server" Text=""></asp:Label>

                    </ItemTemplate>

                </asp:TemplateField>

 
   
/// <summary>

        ///    

        /// </summary>

        /// <param name="sender">        </param>

        /// <param name="e">    </param>

        protected void gvDataList_RowDataBound(object sender, GridViewRowEventArgs e)

        {

            string strKeyGName = txtGName.Text.Trim();

            if (e.Row.RowType == DataControlRowType.DataRow)

            {

                //      

                var strGnameTitle = "    ";

                var strGnameUrl = GetServerPath() + "/HsCode/HscodeInfoIndex.aspx?IsDlg=1&HSCODE=" +

                            DataBinder.Eval(e.Row.DataItem, "CODE_T_S");

                var hyGname = e.Row.FindControl("hyCodeTs") as HyperLink;

                hyGname.Attributes.Add("onclick", string.Format("OpenWindow('{0}','{1}',{2},{3});",

                                                           strGnameTitle, strGnameUrl, "1000", "600"));

                }



        }

 
私がやったのは、現在の行をクリックして、その行の指定フィールドの値を取得することです. DataBinder.Eval(e.Row.DataItem, "CODE_T_S");取得するカラム名.      
 
 
 
GridViewはASP.NETの強力なデータ表示コントロールは、RowDataBoundイベントが行や列のデータを容易に制御する方法を提供します.現在のローのデータ列を取得するには、以下の方法を実践的にまとめます.1.Cells[x].Txt.列セルのテキスト値から取得します.この方法は簡単で高率で,最もよく用いられるが,機能は単純である.この方法では、(1)非表示属性が設定されているデータ列の値を取得できず、取得した値は「」(空)であるという欠点があります.(2)HTMLで定義されたデータ列のみを取得でき、データソースの現在のデータ行のすべてのフィールド列をクエリーできません.一般に、HTMLでGridViewを設定するフィールド列の数は、ビジネスロジックの観点から、すべてのフィールドがページに表示されるわけではないため、データ・ソースの実際のフィールド数よりも少ないことが多い.表示されていないフィールドを使用する必要がある場合、この方法は直接需要を満たすことはできません.2. e.Row.Cells[x].FindControl("YourcontrolName").これは、セル内のサーバーコントロールを検索してデータ値を取得します.この方法では、セル内のサーバコントロールを操作できます.この方法は、テンプレート列のデータまたはコントロールの処理に一般的に使用されます.
  ((System.Web.UI.WebControls.Label)(e.Row.FindControl("lblSurplusMoney"))).Text = strSurplusMoney;3. (DataRowView)e.Row.DataItem).Row.ItemArray[x].ToString().この法の核心はe.Row.GridViewの行データセットであり、Objectタイプであり、DataRowViewタイプに変換すると、より多くの操作方法が得られます.このデータセットは、データソースの現在の行のすべてのフィールド列を表し、ItemArray[x]は現在の行のすべてのフィールド列の配列オブジェクトであり、インデックスxによって任意のフィールド値を得ることができる.この方法の強みは、データ・ソースのすべてのフィールドをクエリーできることです.4. DataBinder.Eval(e.Row.DataItem, "YourDataFieldName").ToString().この方法はe.Rowに基づいている.DataBinderを使用するため、データソースの任意のフィールド値をより迅速に取得することが特徴です.Eval()は、フィールド名を間違えないように注意してください.5.e.Row.DataItemをカスタムタイプに変換し、データ型化を実現します.例えば、DSRequestTracking.TB_RequestTrackingRow rtrow=(DSRequestTracking.TB_RequestTrackingRow)((DataRowView)e.Row.DataItem).Row;     RequestStatusDropDownList1.SelectedValue = rtrow.StatusID.ToString();ここでDSRequestTrackingは、DSRequestTrackingである.xsdファイルプロジェクトでカスタマイズされた強力なタイプのDataSet,TB_RequestTrackingRowは、VSがこの強力なタイプのデータ行オブジェクトを自動的に作成する方法です.この法により,タイプ化データの広範な応用を実現した.データ型化の利点は多く、多くのパラメータの代わりに、フィールド名のスペルミスが二度と発生しないことが明らかになった.GridViewコントロールRowDataBoundイベントでカラムフィールドの値を取得するには、いくつかの方法があります!!!