2

私の最初のページ:

.aspx

<asp:GridView ID="GridView1" runat="server" BackColor="White" 
       BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" 
       CssClass="grdDataGrid" Height="102px" onrowdatabound="GridView1_RowDataBound"> 
   <RowStyle ForeColor="#000066" /> <FooterStyle BackColor="White" ForeColor="#000066" />
   <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
   <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
   <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" /> 
</asp:GridView>

コードビハインド

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        var firstCell = e.Row.Cells[0];
        firstCell.Controls.Clear();
        firstCell.Controls.Add(new HyperLink { NavigateUrl = "ser_job_status1.aspx?Complaint_No = " + firstCell.Text, Text = firstCell.Text, Target = "_blank" });
        Session["Complaint_No"] = firstCell.Text;
        //////Session["Complaint_No"] = GridView1.Rows[e.RowIndex].Cells[HyperLink(NavigateUrl)].Value.ToString();

      }
 }
GridView1.DataBind();

私の2番目のページ:

protected void Page_Load(object sender, EventArgs e)
{     
   string strComplaintNo = Convert.ToString(Session["Complaint_No"]);
   TextBox51.Text = strComplaintNo;
}

私の質問は、データソースを Gridview my firstCell にバインドする前にハイパーリンクを使用しているためです。
テキスト値は、最後にフェッチされたデータを保持します。
したがって、そのリンクをクリックすると、セッションは firstCell の値を取得します。
最後にフェッチされた値を返すテキスト..しかし、私の要件は、ハイパーリンクされた値をフェッチすることです..
誰かがこの問題を解決するのを手伝ってくれますか?コードビハインドとしてC#を使用しました...

4

2 に答える 2

1

行インデックスに応じて、各ハイパーリンクに各行の ID を指定します。

HyperLink HLLink = GridView1.Rows[e.RowIndex].FindControl("HyperLink"+e.RowIndex) as  HyperLink;

Session["Complaint_No"]=HLLink.NavigateURL.ValueToString();
于 2013-02-25T06:17:30.683 に答える
0

これが解決策です。
クエリ文字列を介して次のページに値を送信しているため。
そこに値を設定できます。

protected void Page_Load(object sender, EventArgs e)
{
    string strComplaintNo = Request.QueryString.Get("Complaint_No");
    Session["Complaint_No"]=strComplaintNo ;
    TextBox51.Text = strComplaintNo ;
}

編集 1

<asp:TemplateField HeaderText="Request No.">
   <ItemTemplate>
       <asp:HyperLink ID="EditHyperLink1" runat="server" 
            NavigateUrl='<%#"ser_job_status1.aspx?reqid=" + Eval("ReqId") %>'
            Text='<%# Eval("ReqId") %>' >
       <!--change the column name "ReqId"-->
       </asp:HyperLink>
   </ItemTemplate>
</asp:TemplateField>

そして、ser_job_status1.aspxページで

protected void Page_Load(object sender, EventArgs e)
{
    string strComplaintNo = Request.QueryString.Get("reqid");
    //call your method on the basis of strComplaintNo
   // Session["Complaint_No"]=strComplaintNo ;
    //TextBox51.Text = strComplaintNo ;
}
于 2013-02-25T06:16:31.810 に答える