1

我创建了 gridview 并删除了选择按钮以使所有行都可点击,但我想重定向用户以获取所选项目的详细信息
注意:我删除了 CommandField 选择 V​​isible="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++;
}
4

1 回答 1

0

我用项目模板做了这个。

您需要做的是删除属性 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>

在那里你可以看到我添加了几种类型的项目模板,最重要的是 btnEdit,在那个上有 2 个重要属性,一个是 CommandArgument,您将值发送到页面重定向到另一个是事件OnClick 将处理按钮的单击。

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);
}

我从 VB 中获取这段代码并使用编译器将其更改为 c#,它可能有错误,但就是这样。最简单的方法是在网格模板上使用链接按钮或 hipperlink,这样您就无需转到代码文件。

于 2012-10-05T15:18:38.027 回答