2012-04-25 33 views
-1

這表明當點擊<a href="" />患者詳細信息頁面(錨標記裏面中繼器):查詢字符串值網頁提交後失去

function showPatient(Pid) {       
    RedirectToPage("Patient_Registration.aspx","pid="+Pid); 
    return false; 
} 
<asp:Repeater ID="repeaterPatientList" runat="server" OnItemDataBound="repeaterPatientList_ItemDataBound" > 
    <ItemTemplate> 
     <a href="#" onclick="return showPatient('<%#Eval("PID") %>')"><%#Eval("Patient_Name")%></a> 
    </ItemTemplate> 
</asp:Repeater> 

我越來越pID爲患者詳細信息頁面上的查詢字符串。在第一頁加載後得到pID後,患者信息被填充到相應的文本字段中。但是,當我點擊保存按鈕pID丟失 - 獲取0作爲值,以便插入查詢總是會觸發。

int pID; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    pID = Convert.ToInt32(Request["pid"]); 

    if (pID != 0) 
    { 
     if (IsPostBack == false) 
     { 
      FillPatientInfo(pID); 
     } 
    } 
} 
protected void btnSave_Click(object sender, EventArgs e) 
{ 
    if(pID ==0) 
    { 
     //insert query code 
    } 
    else 
    { 
     //update query code 
    } 
} 
+1

。重定向任何地方的代碼? – 2012-04-25 11:54:23

回答

0

您沒有使用查詢字符串 - 在JavaScript RedirectToPage代碼()方法讀取查詢字符串,並輸出它作爲表單元素,然後提交給目標頁面。

這工作正常,但第一次,但只要頁面回發值失去,所以這種行爲是正確的。

您應該將值存儲在某個位置(ViewState,Session等)或將HiddenField添加到頁面並在第一次加載時填充它,然後在回發時您可以從HiddenField中提取值。

編輯

要轉至hiddenfield路線您使用的迴應控制到您的ASPX頁面這樣

<asp:HiddenField runat="server" ID="hidField" /> 

然後改變你的pageLoad的這樣

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      pID = Convert.ToInt32(Request["pid"]); 
      if(pID != 0) 
      { 
       FillPatientInfo(pID); 
       hidField.Value = pID; 
      } 
     } 
     else 
     { 
      pID = Convert.ToInt32(hidField.Value); 
     } 
    } 
+0

我該怎麼做...使用hiddenfield – harsh 2012-04-25 12:24:52

+0

非常感謝凱文..我有1個問題如何將一個pID作爲querystring從Patient_Registration.aspx傳遞給Create_Order.aspx ..但querystring無法在url.i中顯示沒有想法如何從服務器端代碼傳遞。 – harsh 2012-04-25 13:07:16

+0

@harsh對於像ID這樣簡單的事情我只會將它保存在Session var中,然後在Create Order頁面上檢索它(有關更多詳細信息,請參閱http://msdn.microsoft.com/en-us/library/)。 ms178581.aspx) – 2012-04-25 13:19:04

1

您必須在保存按鈕中再次獲得pid。您正在設置postback == false中來自查詢字符串的pid的值。所以當保存按鈕被點擊時,它會回發,因此查詢字符串中的pid值未分配給類變量pid。

還可以使用的Request.QueryString [ 「PID」]代替請求[ 「PID」]

protected void btnSave_Click(object sender, EventArgs e) 
{ 
    pID = Convert.ToInt32(Request.QueryString["pid"].ToString()); 

    if(pID ==0) 
    { 
    //insert query code 
    } 
    else 
    { 
    //update query code 
    } 

} 
+0

由於查詢字符串可以很容易地由用戶編輯,因此在將查詢字符串值轉換爲整數時,您可能還希望加入一些驗證和錯誤捕獲。例如檢查是否有價值,然後檢查它是否是數字。 – 2012-04-25 12:00:16

+0

不,我已經採取了...但它點擊保存按鈕後丟失... – harsh 2012-04-25 12:01:23

+0

你是否採取它像這樣pID = Convert.ToInt32(Request.QueryString [「pid」]。ToString());並給出包含查詢字符串的網址 – Adil 2012-04-25 12:03:11