1

グリッドビューを作成し、選択ボタンを削除してすべての行をクリック可能にしますが、選択したアイテムの詳細についてユーザーをリダイレクトしたい
注: 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++;
}
4

1 に答える 1

0

これは Item Templates で作成しました。

あなたがしなければならないことは、プロパティ 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です。その1つには2つの重要なプロパティがあります.1つはページにリダイレクトする値を送信するCommandArgumentで、もう1つはイベントですボタンのクリックを処理する 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# に変更しました。エラーが発生する可能性がありますが、それがアイデアです。最も簡単な方法は、グリッドのテンプレートでリンク ボタンまたはハイパーリンクを使用することです。これにより、コード ファイルに移動する必要がなくなる場合があります。

于 2012-10-05T15:18:38.027 に答える