簡體   English   中英

使gridview asp.net中的行可單擊?

[英]make Row in gridview asp.net clickable?

我創建了gridview並刪除了選擇按鈕,以使所有行都可單擊,但是我想為用戶重定向所選項目的詳細信息
注意:我將CommandField移除,然后選擇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>

在那里,您可以看到我添加了幾種類型的項目模板,其中最重要的是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,這樣您可能無需進入代碼文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM