2014-10-01 27 views
0

我正在嘗試使用文本框更新不同頁面中的用戶。但我想要做的是選擇基於GridView的用戶。Gridview複選框在新頁面上更新用戶

因此,在第一頁您會看到一個帶有用戶列表和複選框的gridview。您選中一個帶有複選框的用戶,然後點擊編輯用戶按鈕。然後進入一個新頁面,允許您在文本框中編輯用戶,但由於ID或其他唯一列而填充數據。我將如何做到這一點?

這裏是我到目前爲止的代碼:

protected void Button2_Click(object sender, EventArgs e) 
{ 
    foreach (GridViewRow gvrow in GridView1.Rows) 
    { 
     CheckBox CheckBox1 = (CheckBox)gvrow.FindControl("chkSelect"); 
     if (CheckBox1.Checked) 
     { 
      //Go to new page to edit user 
     } 
     else 
     { 
      //Do nothing if not checked 
     } 
    } 
} 
+0

所以你需要得到被檢查用戶的'ID',對吧? – 2014-10-01 22:16:58

+0

是的,這就是我需要做的 – 2014-10-01 22:17:36

+0

似乎繁瑣,爲什麼不只是有一個「編輯」鏈接按鈕? – sh1rts 2014-10-02 02:07:41

回答

0

我假定你的複選框是<asp:TemplateField>內。

因此,在<asp:TemplateField>中,您可以添加一個<asp:HiddenField />來存儲用戶的ID

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:CheckBox ID="chkSelect" runat="server" /> 
     <asp:HiddenField ID="hfdUserID" runat="server" Value='<%#Eval("id") %>' /> 
    </ItemTemplate> 
</asp:TemplateField> 

後面的代碼

protected void Button2_Click(object sender, EventArgs e) 
{ 
    int userid = 0; 
    foreach (GridViewRow gvrow in GridView1.Rows) 
    { 
     CheckBox CheckBox1 = (CheckBox)gvrow.FindControl("chkSelect"); 
     if (CheckBox1.Checked) 
     { 
      userid = Convert.ToInt32(((HiddenField)gvrow.FindControl("hfdUserID")).Value); 
      Response.Redirect("useredit.aspx?id=" + userid.ToString()); 
     } 
    } 
} 

編輯:然後你就可以得到<asp:HiddenField />

ASPX標記的價值得到ID獲取用戶ID到新頁面,您可以使用以下內容,然後相應地使用它

int userid = Convert.ToInt32(Request.QueryString["id"]); 
+0

對不起,我從一個SQL數據庫拉ID,也想響應重定向到一個新的頁面,並根據SQL ID或主鍵填充 – 2014-10-01 22:32:46

+0

好的,用戶編輯頁面的URL是什麼? – 2014-10-01 22:33:42

+0

useredit.aspx但我可以通過URL傳遞ID?或者是一個隱藏的領域更好? – 2014-10-01 22:38:44