【问题标题】:Asp.net onClick event with select field for gridview带有网格视图选择字段的 Asp.net onClick 事件
【发布时间】:2018-03-21 21:21:33
【问题描述】:

我创建了一个没有数据源控制的gridview,它具有来自数据库表的数据,并且gridview 在一列中也有一个链接选择。 选择链接指向ActivityID(可能会出问题?)

 <asp:GridView ID="gwActivity" runat="server" CssClass="gwActivity" AutoGenerateColumns="false" OnSelectedIndexChanged="gwActivity_SelectedIndexChanged">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:LinkButton ID="lnkSelect" Text="Select" runat="server" CommandArgument='<%# Eval("ActivityID") %>' OnClick="lnkSelect_Click">
                </asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="ActivityID" HeaderText="ActivitID" />
        <asp:BoundField DataField="Activity" HeaderText="Activit" />
        <asp:BoundField DataField="ActivityRegisteredDate" HeaderText="ActivityRegisteredDate" />
        <asp:BoundField DataField="Responsible" HeaderText="Responsible" />
        <asp:BoundField DataField="Category" HeaderText="Category" />
        <asp:BoundField DataField="Change_Requestor" HeaderText="Change_Requestor" />
        <asp:BoundField DataField="Priority" HeaderText="Priority" />
        <asp:BoundField DataField="Size" HeaderText="Size" />
        <asp:BoundField DataField="Status" HeaderText="Status" />
        <asp:BoundField DataField="System" HeaderText="System" />
        <asp:BoundField DataField="Comment" HeaderText="Comment" />
    </Columns>
</asp:GridView>

我创建了一个 OnClick 事件。

protected void lnkSelect_Click(object sender, EventArgs e)
{
    txtActivity.Text = GridView1.SelectedRow.Cells[2].Text;
    ddlChange_Requestor.selectedvalue = GridView1.SelectedRow.Cells[6].selectevvalue;
}

我错过了什么?我应该是“FindControl”吗?我有点迷路了?

例如

Activity 文本框 (txtActivity) = Test2(应该在文本框中说)............ ………………………………………………………………………………………… 更改请求者下拉列表 (ddlChange_Requestor) = ...(查找更改请求值并更改下拉列表)

【问题讨论】:

    标签: c# asp.net gridview onclick


    【解决方案1】:

    您应该切换到 GridView RowCommand

    <asp:GridView ID="gwActivity" runat="server" OnRowCommand="gwActivity_RowCommand">
    

    并将 LinkBut​​ton 更改为

    <asp:LinkButton ID="lnkSelect" runat="server" CommandArgument='<%# Eval("ActivityID") %>'>Select</asp:LinkButton>
    

    现在您可以在方法中获取您需要的所有数据。

    protected void gwActivity_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
    
        txtActivity.Text = row.Cells[2].Text;
        ddlChange_Requestor.SelectedValue = e.CommandArgument.ToString();
    }
    

    【讨论】:

    • 嗨,谢谢你,这几乎可以工作了。我让它适用于文本框但不适用于下拉列表?我不应该说 ddlChange_Requestor.SelectedValue = 使用 gridview 中的哪一行/列?
    • 检查 DDL 中的值。 GridView 中 LinkBut​​ton 的 CommandArgument 应该是这些值之一。
    • 我让它工作了:ddlchange_requestor.SelectedValue = row.Cells[6].Text;
    【解决方案2】:

    如果您只是将数据从数据网格行复制到输入字段,那么您尝试执行的操作会产生高昂的执行成本。在服务器端处理 LinkBut​​ton OnClick 事件需要回发页面,触发所有页面事件(例如,将数据绑定到模板的事件,执行 LinkBut​​ton OnClick 事件,并将整个页面呈现为 HTML),以及生成的 HTML 将被发送回浏览器进行显示。

    如果您可以使用 javascript,则应考虑使用 OnClientClick event handler,因为这样可以让您在网页上而不发回 Web 服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      • 2011-11-11
      相关资源
      最近更新 更多