2014-10-26 59 views
0

任何人都可以請幫我我在ASP.NET中有一個表叫:info,有3列:id,name,code 我想在一個名爲Default.aspx的頁面上有一個checkboxlist顯示錶的列,並且當用戶選擇他想要查看的列時,然後他按下一個按鈕將其重定向到另一個頁面並以Gridview顯示(gridview結果顯示在不同的頁面中,這非常重要)在Gridview中的不同頁面顯示選定的列

第1頁:

<form id="form1" runat="server"> 
<div> 
    <asp:Panel ID="Panel1" runat="server" BackColor="#FFFFCC" Height="165px" Width="155px"> 
     <asp:CheckBoxList ID="CheckBoxList1" runat="server"></asp:CheckBoxList> 
     <br /> 
     &nbsp; 
    </asp:Panel>  
</div> 
    <br /> 
    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" style="height: 26px" Text="Button" /> 
    <br /> 
</form> 

落後第1頁代碼:

SqlConnection con = new SqlConnection("Server=.\\SQLEXPRESS;Database = ProiectWeb; Integrated Security=True"); 
SqlCommand cmd = new SqlCommand(); 
SqlDataReader reader; 

protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!this.IsPostBack) 
    { 
     loadData(); 
    } 


} 
private void loadData() 
{ 
    cmd.Connection = con; 
    cmd.CommandText = "SELECT column_name FROM information_schema.columns WHERE table_name ='info' ORDER BY ordinal_position"; 
    con.Open(); 
    reader = cmd.ExecuteReader(); 
    if (reader.HasRows) 
    { 
     while (reader.Read()) 
     { 
      CheckBoxList1.Items.Add(reader[0].ToString()); 
     } 
    } 
    reader.Close(); 
    con.Close(); 
} 
protected void Button1_Click(object sender, EventArgs e) 
{ 


} 

第2頁:

<asp:Panel ID="Panel2" runat="server" Height="302px" Width="278px"> 
     <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" style="margin-left: 0px"> 

     </asp:GridView> 
    </asp:Panel> 

代碼頁背後2:

SqlConnection con = new SqlConnection("Server=.\\SQLEXPRESS;Database = ProiectWeb; Integrated Security=True"); 
SqlCommand cmd = new SqlCommand(); 


protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!this.IsPostBack) 
    { 
     cmd.Connection = con; 
     loadGrid("SELECT * FROM info"); 
    } 
} 

public void loadGrid(string query) 
{ 
    DataSet data = new DataSet(); 
    SqlDataAdapter adapter = new SqlDataAdapter(query,con); 
    adapter.Fill(data); 
    GridView1.DataSource = data; 
    GridView1.DataBind(); 
} 
+0

你到目前爲止嘗試過什麼嗎?如果是這樣,發佈代碼,你面臨的問題! – 2014-10-26 14:02:02

+0

我推測了我直到現在仍在使用的代碼 – tenebrez123 2014-10-26 17:20:01

+0

首先,您必須將選定的列傳遞到第二頁,然後在第二頁中使用動態SQL來選擇數據並綁定到gridview或簡單地打開所需的列gridview並使其隱藏。 – 2014-10-26 17:29:02

回答

1

您需要遵循,這一點。

  1. Button1_click事件中,獲取所選複選框的選定列表,並將它們作爲查詢字符串發佈到第二頁。我知道querystring有長度限制,還有其他傳遞值的方式(post data,session ..),但是如果列表不多,你可以使用這種方法。

以下代碼將獲得所選列的列表,並重定向到第二頁。

protected void Button1_Click(object sender, EventArgs e) 
{ 
    List<string> selected = CheckBoxList1.Items.Cast<ListItem>() 
     .Where(li => li.Selected) 
     .Select(li => li.Text) 
     .ToList(); 
    string sel = string.Join(",", selected); 
    Response.Redirect("Second.aspx?cols=" + sel); 
} 
  • 在第二頁上,page_load事件讀查詢字符串cols,並使用gridview Row_databound事件作出隱藏除了那些作爲查詢字符串列的其餘部分。
  • 對於這種情況,你可以參考 - GridView Hide Column by codeORHide a GridView column by name at runtime in ASP.Net

    同樣,也有實現這一點,就像生成動態SQL來獲得所需要的數據和綁定,爲gridview的選項。但上面看起來很簡單,這就是我爲什麼這樣解釋的原因。

    +0

    和第二頁我必須修改一些東西?導致它仍然沒有工作? :( – tenebrez123 2014-10-26 19:18:52

    +0

    或「選擇」+ sel +「來自Info」對吧? – naveen 2014-10-26 19:45:47

    +0

    @ tenebrez123,上面的評論說好的建議,只需使用'「Select」+ sel +「from Info」,@naveen,你是對的! – 2014-10-27 05:12:41

    相關問題