2011-05-11 16 views
0
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Onrowupdating="GridView1_RowUpdating" onrowediting="GridView1_RowEditing"> 
    <Columns> 
     <asp:TemplateField HeaderText="Test"> 
      <EditItemTemplate> 
       <asp:UpdatePanel ID="up1" runat="server" UpdateMode="Conditional"> 
        <ContentTemplate> 
         <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
          OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"> 
          <asp:ListItem>Test1</asp:ListItem> 
          <asp:ListItem>Test2</asp:ListItem> 
          <asp:ListItem>Test3</asp:ListItem> 
         </asp:DropDownList> 
        </ContentTemplate> 
       </asp:UpdatePanel> 
      </EditItemTemplate> 
      <ItemTemplate> 
       <asp:Label ID="Label1" runat="server" Text='<%# Bind("SS") %>' /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Rate"> 
      <EditItemTemplate> 
       <asp:UpdatePanel ID="up2" runat="server" UpdateMode="Conditional"> 
        <ContentTemplate> 
         <asp:DropDownList ID="DropDownList2" runat="server" /> 
        </ContentTemplate> 
       </asp:UpdatePanel> 
      </EditItemTemplate> 
      <ItemTemplate> 
       <asp:Label ID="Label2" runat="server" Text="Label" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:CommandField ShowEditButton="True" /> 
    </Columns> 
</asp:GridView> 

グリッドが編集モードのときDropDownList2の参照を取得する方法DropDownList1_SelectedIndexChangedCodeDhindへのDropDownListの参照を取得するには?

答えて

1

質問を編集した後。あなたのように達成することができます...

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    DropDownList DropDownList2 = ((DropDownList)((DropDownList)sender).Parent.FindControl("DropDownList2")); 
} 
+0

編集モードの外には存在しません。これは編集テンプレートの一部です。 –

+0

@james;あなたはRowUpdatingイベントを見ていますか?私は自分の答えを更新しました。 –

+0

@jams;私の答えを更新しました。今すぐやってみて下さい。 –

0

コードビハインドのドロップダウンへの参照が存在しないため、参照できないと思います。ドロップダウンはあなたの例では更新モードでのみ存在するので、あなたはそこから不運になります。ただし、GridViewを動的に追加したり、コードビハインドにテンプレートを追加したりすることができます。

実際の問題の詳細については、別の解決方法があります。

+0

私はGridViewのの編集モードにしています。 – jams

1

あなたはGridView1_RowEditingにアクセスする必要があります。あなたは、のようなものを使用してコントロールに割り当てる必要があります:

DropDownList list = e.Row.FindControl("DropDownList1") as DropDownList; 

EDIT:新しい情報に基づいて、これはそれを行う必要があります。

int index = -1; 

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
index = e.Row.Index; 
} 

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
DropDownList DropDownList2 = GridView1.Rows[index].FindControl("DropDownList2") as DropDownList; 
} 
+0

グリッドが編集モードになっていますDropDownList1が表示されています。そのときグリッド外の参照を取得する必要があります。 – jams

+0

編集モードの外には存在しません。これは編集テンプレートの一部です。あなたはそれが変更された後に価値を得る必要があるという意味ですか?私はそこにオートポストバックを見る。 –

+0

@ jesus.tesh: 'NULL'参照は復帰です。 – jams

関連する問題