C# 是否使gridview asp.net中的行可单击?

C# 是否使gridview asp.net中的行可单击?,c#,asp.net,C#,Asp.net,我创建gridview并删除select按钮以使所有行都可单击,但我想重定向用户以获取所选项目的详细信息 注意:I删除CommandField select Visible=False int rowCount = 0; protected void gv_TasksProjectForUser_RowCreated(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.D

我创建gridview并删除select按钮以使所有行都可单击,但我想重定向用户以获取所选项目的详细信息 注意:I删除CommandField select Visible=False

    int rowCount = 0;
protected void gv_TasksProjectForUser_RowCreated(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        //var taskID = gv_TasksProjectForUser.SelectedDataKey.Value;
        e.Row.Attributes.Add("onclick", "location='TaskDetail.aspx?taskID=" + e.Row.RowIndex + "'");
        e.Row.Attributes.Add("onmouseover", "JavaScript:this.style.cursor='pointer';");

    }
    rowCount++;
}

我已经做了这个项目的模板

您需要做的是删除属性AutogenerateColums并使用对象和项目模板手动添加它们,在这些模板上添加一个按钮

稍后在代码后面添加一个事件来处理按钮单击,在该事件上您可以执行response.redirect到另一个页面

<asp:GridView ID="userGrid" runat="server" CssClass="AdminGrid" 
                        AllowPaging="True" AutoGenerateColumns="False" PageSize="11">
                        <Columns>                
                            <asp:BoundField DataField="ApplicationId" Visible="False" />
                            <asp:BoundField DataField="UserName" Visible="False" />                                                                   
                            <asp:TemplateField >
                                <HeaderTemplate>
                                    <asp:Label ID="lblEmail" Text="E-Mail" runat="server" CssClass = "HeaderLabel" meta:resourcekey="lblEmail"></asp:Label>
                                    <asp:ImageButton ID="imgSortEMail" runat="server" ImageUrl="~/Images/normal.gif" OnClick="SortGrid" CommandArgument="EMail" CssClass="SortButton" ToolTip="Click here to Order" />
                                </HeaderTemplate>
                                <ItemTemplate>
                                    <asp:HyperLink ID="lnkEMail" runat="server" CssClass="EmailLinkButton" Text='<%# FormatGridTextDisplay(DataBinder.Eval(Container.DataItem, "EMail")) %>' ToolTip='<%# DataBinder.Eval(Container.DataItem, "EMail") %>' NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "EMail","mailto:{0}") %>' ></asp:HyperLink>                                                                                
                                </ItemTemplate>
                                <HeaderStyle CssClass="OverFlowStringField" />
                                <ItemStyle CssClass="OverFlowLeftAligned" />
                            </asp:TemplateField>
                            <asp:TemplateField >
                                <HeaderTemplate>
                                    <asp:Label ID="lblSalonUser" Text="Salon User" runat="server" CssClass = "HeaderLabel" meta:resourcekey="lblSalonUser"></asp:Label>
                                    <asp:ImageButton ID="imgSortIsSalonUser" runat="server" ImageUrl="~/Images/normal.gif" OnClick="SortGrid" CommandArgument="IsSalonUser" CssClass="SortButton" ToolTip="Click here to Order" />
                                </HeaderTemplate>
                                <ItemTemplate>
                                    <asp:CheckBox ID="chkSalonUser" runat="server" Checked='<%# DataBinder.Eval(Container.DataItem, "IsSalonUser") %>' onclick="javascript:if (this.checked==true) this.checked=false; else this.checked=true;"/>                      
                                </ItemTemplate>
                                <HeaderStyle CssClass="OverFlowStringField" />
                                <ItemStyle CssClass="CenterAligned" />
                            </asp:TemplateField>
                            <asp:TemplateField >                
                                <ItemTemplate>
                                    <asp:Button ID="btnEdit" runat="server" Text="Editar" CssClass="GridButton" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "UserName")%> '  OnClick="btnEdit_Click" meta:resourcekey="btnEdit"/>                        
                                </ItemTemplate>
                                <HeaderStyle CssClass="OverFlowStringField" />
                                <ItemStyle CssClass="CenterAligned" />
                            </asp:TemplateField>
                        </Columns>
                    </asp:GridView>
我从VB中获取了这段代码,并使用编译器将其更改为c,它可能有错误,但这就是我的想法。
最简单的方法是在网格的模板上使用链接按钮或hipperlink,这样您可能就不需要访问代码文件了。

可能只是我,但有点难以理解您的意思,你能再详细一点吗?试着将location='taskdail.aspx?taskID=更改为window.location='taskdail.aspx?taskID=我想OP是在问如何使行可单击,如果单击了行,希望重定向到项目详细信息页面。
Protected void btnEdit_Click(Object sender , System.EventArgs e ){
    Button clickedButton = (sender)Button;
    String() argumentsSend = clickedButton.CommandArgument.ToString().Split("|");
    String backParameters;


    Response.Redirect(String.Concat("RedirectPage.aspx?user=", Server.UrlEncode(argumentsSend(0)), "&company=", Server.UrlEncode(argumentsSend(1)), True);
}