c# 種類 編集項目テンプレートでコントロールを見つける方法は?




vb.net controls (2)

このコードを試すことができます - EditIndex property基づいて

var DdlCountry  = GridView1.Rows[GridView1.EditIndex].FindControl("DdlCountry") as DropDownList;

リンク: http : //msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.gridview.editindex.aspx

私は、フォーム上のgridviewを持って、いくつかのテンプレートフィールドを持って、それらの一つです:

<asp:TemplateField HeaderText="Country" HeaderStyle-HorizontalAlign="Left">
    <EditItemTemplate>
        <asp:DropDownList ID="DdlCountry" runat="server" DataTextField="Country" DataValueField="Sno">
        </asp:DropDownList>
    </EditItemTemplate>
    </asp:TemplateField>

今RowEditingイベントで私は国のdropdownlistの選択された値を取得する必要があり、私はDdlcountry.selectedvalue = valueとしてその値を設定します。 編集アイテムテンプレートのドロップダウンリストが表示されたときに、ドロップダウンリストの0インデックスではなく選択された値が表示されます。 私はドロップダウンリストの値を取得することができません。 私はこれを既に試みた:

int index = e.NewEditIndex;
DropDownList DdlCountry = GridView1.Rows[index].FindControl("DdlCountry") as DropDownList;

お願いします。 高すぎる。


EditItemTemplate内のコントロールにアクセスできるようにするには、再度GridViewをデータEditItemTemplateする必要がありGridView 。 だからこれを試してください:

int index = e.NewEditIndex;
DataBindGridView();  // this is a method which assigns the DataSource and calls GridView1.DataBind()
DropDownList DdlCountry = GridView1.Rows[index].FindControl("DdlCountry") as DropDownList;

しかし、代わりに私はこのためにRowDataBoundを使用します。それ以外の場合は、コードを複製しています:

protected void gridView1_RowDataBound(object sender, GridViewEditEventArgs e)
{
 if (e.Row.RowType == DataControlRowType.DataRow)
  {
        if ((e.Row.RowState & DataControlRowState.Edit) > 0)
        {
          DropDownList DdlCountry = (DropDownList)e.Row.FindControl("DdlCountry");
          // bind DropDown manually
          DdlCountry.DataSource = GetCountryDataSource();
          DdlCountry.DataTextField = "country_name";
          DdlCountry.DataValueField = "country_id";
          DdlCountry.DataBind();

          DataRowView dr = e.Row.DataItem as DataRowView;
          Ddlcountry.SelectedValue = value; // you can use e.Row.DataItem to get the value
        }
   }
}




gridview