Tombol tautan Gridview perubahan postbackurl pada acara pemuatan halaman

Saya memiliki tampilan kisi dengan tombol tautan, tombol tautan url ditetapkan menggunakan kode dengan mengganti kata kunci dengan nama dari DB.

semua berfungsi dengan baik, kecuali ketika saya mengklik tombol kembali di browser dan mencoba tautan lain saya mendapatkan kesalahan ini:

"Kata kerja HTTP POST yang digunakan untuk mengakses jalur '/System.Web.UI.WebControls.Label' tidak diperbolehkan"

di bawah ini adalah kode saya:

   protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Response.Cache.SetCacheability(HttpCacheability.NoCache);

            GridView1.DataSourceID = "SqlDataSource1";
            GridView1.DataBind();



            foreach (GridViewRow row in GridView1.Rows)
            {
                if (row.RowType == DataControlRowType.DataRow)
                {
                    var HyperLink = row.FindControl("LinkButton1") as LinkButton;
                    var RepID = row.FindControl("Label1") as Label;

                    if (RepID != null)
                    {
                        StringBuilder lnk = new StringBuilder("http://bhvwtwbis2/Ops/_layouts/ReportServer/RSViewerPage.aspx?rv:RelativeReportUrl=/Ops/GAPPBASE/Reports/kai.rdl&Source=http%3A%2F%2Fbhvwtwbis2%2FOps%2FGAPPBASE%2FForms%2FAllItems%2Easpx%3FRootFolder%3D%252FOps%252FGAPPBASE%252FReports%26FolderCTID%3D0x012000D833091DB062524DA7A0550847E4E075%26View%3D%7B8A039A42%2D111E%2D40C4%2D8489%2D0D7F32CEAF36%7D&DefaultItemOpen=1");
                        lnk.Replace("kai", RepID.Text + "x1");
                        HyperLink.PostBackUrl = lnk.ToString();
                    }
                }

            }

        }

    }


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="report_id" DataSourceID="SqlDataSource1" BackColor="White" 
        BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="4" 
        ForeColor="Black" GridLines="Horizontal">
        <Columns>

        <asp:TemplateField HeaderText="ID">
        <ItemTemplate>
            <asp:Label ID="Label1" runat="server" Text='<%# Eval("report_name")%>'></asp:Label>

        </ItemTemplate>

                    <HeaderStyle HorizontalAlign="center" 
                        VerticalAlign="Middle" />
                    <ItemStyle CssClass="link3" HorizontalAlign="Left" />

        </asp:TemplateField>
                <asp:TemplateField HeaderText="Title">
        <ItemTemplate>
            <asp:LinkButton ID="LinkButton1" runat="server" Text='<%# Eval("report_subject")%>'></asp:LinkButton>

        </ItemTemplate>

                    <HeaderStyle HorizontalAlign="center" 
                        VerticalAlign="Middle" />
                    <ItemStyle CssClass="link3" HorizontalAlign="Left" />

        </asp:TemplateField>

        </Columns>
        <FooterStyle BackColor="#CCCC99" ForeColor="Black" />
        <HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="Right" />
        <SelectedRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" />
        <SortedAscendingCellStyle BackColor="#F7F7F7" />
        <SortedAscendingHeaderStyle BackColor="#4B4B4B" />
        <SortedDescendingCellStyle BackColor="#E5E5E5" />
        <SortedDescendingHeaderStyle BackColor="#242121" />
    </asp:GridView>

person Ammar Ali    schedule 10.06.2013    source sumber
comment
Jadi, Anda menyetel URL postback Hyperlink ke apa yang ada di label Teks dengan tambahan x1? Bukankah lebih baik jika hanya menggunakan asp:Repeater untuk membuat tombol tautan sesuai keinginan Anda sejak awal?   -  person Mikey Mouse    schedule 10.06.2013
comment
Juga, Bisakah Anda memposting definisi untuk GridView1 Anda   -  person Mikey Mouse    schedule 10.06.2013
comment
Saya menggunakan tampilan grid karena. ia memiliki paging secara langsung (cara mudah)   -  person Ammar Ali    schedule 11.06.2013
comment
menambahkan kode aspx gridview, terima kasih telah menawarkan bantuan Anda   -  person Ammar Ali    schedule 11.06.2013
comment
Saya telah memposting solusinya, semoga berhasil   -  person Mikey Mouse    schedule 11.06.2013


Jawaban (1)


Saya pikir masalahnya mungkin Anda melakukan pengikatan pada tahap Page_Load dari siklus hidup halaman. Coba pindahkan kode foreach Anda ke a

    protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {

                  var HyperLink = e.Row.FindControl("LinkButton1") as LinkButton;
                  //var RepID = row.FindControl("Label1") as Label;
                  //You should be able to access your field without referencing the label too
                  DataRow row = ((DataRowView)e.Row.DataItem).Row;
                  var myField = row.Field<string>("report_name");

                  if (RepID != null)
                  {
                      StringBuilder lnk = new StringBuilder("http://bhvwtwbis2/Ops/_layouts/ReportServer/RSViewerPage.aspx?rv:RelativeReportUrl=/Ops/GAPPBASE/Reports/kai.rdl&Source=http%3A%2F%2Fbhvwtwbis2%2FOps%2FGAPPBASE%2FForms%2FAllItems%2Easpx%3FRootFolder%3D%252FOps%252FGAPPBASE%252FReports%26FolderCTID%3D0x012000D833091DB062524DA7A0550847E4E075%26View%3D%7B8A039A42%2D111E%2D40C4%2D8489%2D0D7F32CEAF36%7D&DefaultItemOpen=1");
                    lnk.Replace("kai", myField  + "x1");
                    HyperLink.PostBackUrl = lnk.ToString();
                  }
          }

    }
person Mikey Mouse    schedule 11.06.2013