gridview中的下拉列表重置为默认值而不是选定的值

时间:2014-11-12 18:57:31

标签: asp.net gridview

我有两个GridView(SalesGView和ProdGView)。 SalesGView包含dropdowlist和textboxes.ProdGView包含ModalPopup,并由来自ProdGView的下拉列表选项填充。

问题是当我点击ProdGView上的按钮选择时,SalesGView中的下拉列表会重置为默认值(电子设备),而不是选定的值。

我需要有关如何纠正此问题的帮助。

aspx代码:

SalesGView下拉列表

  <asp:DropDownList ID="CatCode"  OnSelectedIndexChanged ="CatCode_SelectedIndexChanged"   AutoPostBack="true" runat="server" />

ProdGView SelectRow

<asp:GridView ID="ProdGView" runat="server" AutoGenerateColumns="False">
    <Columns>

        <asp:TemplateField>
            <ItemTemplate>
        <asp:Button ID="btnSelect" Text="Select"  runat="server" OnClick="SelectRow"  />  
            </ItemTemplate>
        </asp:TemplateField>

    </Columns>
</asp:GridView>

代码背后:

Private Sub SalesGView_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles SalesGView.RowDataBound
    If (e.Row.RowType = DataControlRowType.DataRow) Then
        Dim ctrl As Control = e.Row.FindControl("CatCode")
        If (Not (ctrl) Is Nothing) Then
            Dim dd As DropDownList = CType(ctrl, DropDownList)
            Dim connStr As String = ConfigurationManager.ConnectionStrings("SY_InventoryConnectionString").ConnectionString
            Dim sqlda As SqlDataAdapter = New SqlDataAdapter
            Dim com As SqlCommand = New SqlCommand
            Dim dt As DataTable

            Dim conn As SqlConnection = New SqlConnection(connStr)
            dt = New DataTable
            com.Connection = conn
            com.CommandText = "SELECT CatName FROM Prod_Category"
            sqlda = New SqlDataAdapter(com)
            sqlda.Fill(dt)

            dd.DataTextField = "CatName"
            dd.DataValueField = "CatName"
            dd.DataSource = dt
            dd.DataBind()

        End If
    End If
    Dim lb As DropDownList = TryCast(e.Row.FindControl("CatCode"), DropDownList)
    ScriptManager.GetCurrent(Me).RegisterAsyncPostBackControl(lb)

End Sub

Protected Sub CatCode_SelectedIndexChanged(sender As Object, e As EventArgs)

    Me.ModalPopupExtender1.Show()
    BindProdGrid()

End Sub

Protected Sub SelectRow(sender As Object, e As EventArgs)

    Dim dt As New DataTable()
    If ViewState("DataTable") Is Nothing Then
        dt = New DataTable()
        dt.Columns.AddRange(New DataColumn(1) {New DataColumn("Column2"), New DataColumn("Column4", GetType(String))})
    Else
        dt = DirectCast(ViewState("DataTable"), DataTable)
    End If
    Dim row As GridViewRow = TryCast(TryCast(sender, Button).NamingContainer, GridViewRow)


    Dim desc As String = row.Cells(2).Text
    Dim price As String = row.Cells(3).Text
    dt.Rows.Add(desc, price)
    Me.SalesGView.DataSource = dt
    Me.SalesGView.DataBind()
    ViewState("DataTable") = dt

End Sub
 Private Sub BindProdGrid()
    Dim conString As String = ConfigurationManager.ConnectionStrings("SY_InventoryConnectionString").ConnectionString
    Dim rowIndex As Integer = 0
    Dim catname As DropDownList = CType(SalesGView.Rows(rowIndex).Cells(1).FindControl("CatCode"), DropDownList)

    Using con As New SqlConnection(conString)
        Using cmd As New SqlCommand("select Product.CatID,Product.PName,Product.PDesc, " _
             & "  Product_Details.USP, Prod_Category.CatName " _
             & "  from Product inner join Product_Details on Product.CatID= Product_Details.CatID " _
             & "  inner join Prod_Category on Product_Details.CatID=Prod_Category.CatID where Prod_Category.CatName='" & (catname.SelectedItem.Text) & "' ")

            Using sda As New SqlDataAdapter()
                cmd.Connection = con
                sda.SelectCommand = cmd
                Dim dt As New DataTable()
                sda.Fill(dt)
                Me.ProdGView.DataSource = dt
                Me.ProdGView.DataBind()
            End Using
        End Using
    End Using

End Sub

0 个答案:

没有答案