Asp.net onClick事件,其中包含gridview

时间:2018-03-21 21:21:34

标签: c# asp.net gridview onclick

我有一个我没有数据源控件创建的gridview,它有来自数据库表的数据,gridview在一列中也有一个链接选择。 select链接指向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>

enter image description here

我创建了一个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”..我有点迷失在这里?

e.g。

enter image description here

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

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

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

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