【问题标题】:ASP.NET Gridview Dropdown Template Field Triggering SelectedIndexChanged on GridviewASP.NET Gridview 下拉模板字段在 Gridview 中触发 SelectedIndexChanged
【发布时间】:2016-03-01 22:15:08
【问题描述】:

我有一个带有 ddlAction 下拉列表的基本 ASP.NET Gridview

    <asp:GridView ID="GridView1" CssClass="mgrid2"
    runat="server" AutoGenerateColumns="False" ForeColor="White" DataSourceID="SqlDataSource1" OnRowCommand="GridView1_RowCommand" OnRowDataBound="GridView1_RowDataBound">
    <Columns>
        <asp:BoundField DataField="ClientName" HeaderText="ClientName" SortExpression="ClientName" />
        <asp:BoundField DataField="ProjectID" HeaderText="ProjectID" SortExpression="ProjectID" />
        <asp:BoundField DataField="ProjectName" HeaderText="ProjectName" SortExpression="ProjectName" />
        <asp:BoundField DataField="Budget" HeaderText="Budget" ReadOnly="True" SortExpression="Budget" />
        <asp:BoundField DataField="PercentComplete" HeaderText="PercentComplete" ReadOnly="True" SortExpression="PercentComplete" />
        <asp:BoundField DataField="EarnedMH" HeaderText="EarnedMH" ReadOnly="True" SortExpression="EarnedMH" />
        <asp:TemplateField>
            <ItemTemplate>
                <asp:DropDownList ID="ddlAction" CssClass="dropdownlist" runat="server" AutoPostBack="true" OnSelectedIndexChanged=""GridView1_SelectedIndexChanged"></asp:DropDownList>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

它在 rowdatabound 上填充

   If e.Row.RowType = DataControlRowType.DataRow Then
        Dim ddl = TryCast(e.Row.FindControl("ddlAction"), DropDownList)
        If ddl IsNot Nothing Then
            ddl.DataSource = New List(Of String)() From {
                "Action",
                "View",
                "Edit",
                "Archive"
            }
            ddl.DataBind()
   End IF

我希望下拉列表触发 GridView1 selectedindexchanged 事件,以便我可以获取选定行的 ProjectID,但我也想获取下拉列表 ddlAction 的选定值

Similar to this example 谢谢

已更新,有答案

Protected Sub GridView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GridView1.SelectedIndexChanged
    Dim ddl = DirectCast(sender, DropDownList)
    Dim row As GridViewRow = CType(ddl.NamingContainer, GridViewRow)

从这两个项目中您可以访问您需要的内容

【问题讨论】:

    标签: c# asp.net vb.net gridview


    【解决方案1】:

    我有一段时间没用vb了,但是你的事件方法中没有发送者的访问权限吗?

    var value = (sender as DropDownList).SelectedValue;
    

    【讨论】:

    • 这几乎让我明白了!!我可以获取下拉列表的值,但无法获取选定的行索引。有什么想法吗?如果这对您来说更容易,我可以找出 C# 版本,如果有帮助,我也可以使用 javascript
    • 你试过 GridView1.SelectedRow 吗?抱歉,我的大部分经验是 C#,所以 VB 语法可能不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 2016-08-03
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多