Как получить значение раскрывающегося списка, который находится внутри сетки по нажатию кнопки? - PullRequest
1 голос
/ 12 сентября 2011

У меня есть выпадающий список внутри сетки. Теперь я хочу, когда я нажимаю на кнопку, тогда я могу проверить значение раскрывающегося списка. Я запустил событие rowcommand gridview для него, но отладчик не может туда добраться .. Пожалуйста, помогите мне .. Мой код

  Protected Sub grd_Test_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles grd_Test.RowCommand
    If e.CommandName = "Select" Then


     End If
End Sub

Мой исходный код

   <asp:GridView ID="grd_UnAssignProperties" runat="server" AutoGenerateColumns="False"><Columns>
                    <asp:TemplateField HeaderText="Assign To">
                        <ItemTemplate>
                            <asp:DropDownList ID="drp_UnAssignProp" runat="server">

                            <asp:ListItem  Value="" >Default</asp:ListItem>
                            </asp:DropDownList>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns></asp:GridView><tr><td><asp:Button ID="btn_Save" runat="server" CommandName="Select" Text="Submit"  />

Ответы [ 3 ]

1 голос
/ 09 мая 2014

попробуй

  string val = (DropDownList)GridView1.Rows[e.RowIndex].Cells[0]
               .FindControl("drp_UnAssignProp").SelectedValue;
1 голос
/ 12 сентября 2011

попробуйте

DropDownList ddl = (DropDownList)GridView1.Rows[e.RowIndex].Cells[0].FindControl("drp_UnAssignProp");
string val = ddl.SelectedValue;
0 голосов
/ 12 сентября 2011

Прежде всего, поскольку кнопка btn_Save не находится внутри GridView, нажатие на нее не повысит значение grd_Test_RowCommand, либо переместите кнопку внутрь GridView, либо нужно поднять ее вручную, как это:

Скопировано с форума asp.net:

Protected Sub Button1_Click(sender As Object, e As EventArgs)
    Dim commandArgs As New CommandEventArgs("Command Name Here", "Your Command Argument Here")
    'You can pass any row
    'You can also skip the row parameter and get the row from Command Argument
    Dim eventArgs As New GridViewCommandEventArgs(GridView1.Rows(0), GridView1, commandArgs)
    GridView1_RowCommand(GridView1, eventArgs)
End Sub

Теперь относительно вашего исходного вопроса, вот как вы можете получить выбранное значение DropDownList внутри RowCommand события:

Редактировать: Исправлен код для получения текущей строки, для которой было вызвано событие RowCommand

Protected Sub grd_Test_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles grd_Test.RowCommand
    If e.CommandName = "Select" Then
        Dim index As Integer = Convert.ToInt32(e.CommandArgument)
        Dim row As GridViewRow = DirectCast(DirectCast(e.CommandSource, LinkButton).NamingContainer, GridViewRow)
        Dim ddl as DropDownList = CType(row.FindControl("drp_UnAssignProp", DropDownList)
        Dim selectedValue as String = ddl.Text
     End If
End Sub
...