2010-11-18 20 views
0

グリッドビューのドロップダウンリストに問題があります。行がデータバインドされると、ドロップダウンリストのデータをバインドします。しかし、私がデータを選択すると、選択インデックスが変更されません。アイテムリストをハードコードして、選択インデックスを変更した別のドロップダウンリストが変更されました。この問題に関するご意見をお寄せください。以下は、コードの後ろとフロントエンドのコードです。gridviewのドロップダウンリストが選択されていません。火災選択インデックスが変更されました。

   <ItemTemplate> 
        <asp:DropDownList ID="ddlItem" runat="server" Width="80%" AutoPostBack="true" OnSelectedIndexChanged="ddlPrice_SelectedIndexChanged"></asp:DropDownList> 
       </ItemTemplate> 



       <ItemTemplate> 
        <asp:DropDownList runat="server" ID="ddl" AutoPostBack="true" OnSelectedIndexChanged="ddl_SelectedIndexChanged"> 
         <asp:ListItem Text="Compliant" Value="0" /> 
           <asp:ListItem Text="Other Than Serious" Value="1" /> 
           <asp:ListItem Text="Serious" Value="2" /> 
           <asp:ListItem Text="Critical" Value="3" /> 

        </asp:DropDownList> 
       </ItemTemplate> 

サブをPage_Load保護(オブジェクトとしてByVal送信者、System.EventArgsとしてByVal e)は

Dim oCategoryDetails As New CategoryDetails 

    If Not IsPostBack Then 
     gdCat.DataSource = oCat.Read 
     gdCat.DataBind() 
    End If 

End Subの

Dim ddl As DropDownList 
     ddl = DirectCast(e.Row.FindControl("ddlItem"), DropDownList) 
     If Not ddl Is Nothing Then 
      If oDS.Tables.Item(0).Rows.Count > 0 Then 
       ddl.DataSource = oDS 
       ddl.DataTextField = "ItemName" 
       ddl.DataValueField = "ItemPrice" 
       ddl.DataBind() 
      Else 
       ddl.Visible = False 
      End If 

     End If 

     If Me.IsPostBack Then 

      If e.Row.RowType = DataControlRowType.DataRow Then 
       AddHandler ddl.SelectedIndexChanged, AddressOf ddlPrice_SelectedIndexChanged 
      End If 
     End If 

End Subの

答えて

0

なぜMe.Loadを処理しますIf Not IsPostBackのみをバインドするときに、RowDataBoundにIf me.IsPostBackの部分を追加しましたか? ? 通常、aspxマークアップにOnSelectedIndexChanged="ddlPrice_SelectedIndexChanged"を追加すれば十分です。しかし、あなたはすべてのPostBackのRowCreatedでハンドラを追加しようとすることができます:

Private Sub gdCat_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gdCat.RowCreated 
    Select Case e.Row.RowType 
     Case DataControlRowType.DataRow 
      Dim ddlItem as DropDownList = DirectCast(e.Row.FindControl("ddlItem"),DropDownList) 
      AddHandler ddlItem.SelectedIndexChanged, AddressOf ddlPrice_SelectedIndexChanged 
    End Select 
End Sub 
関連する問題