2014-12-05 117 views
-2

我需要從我的用戶表中選擇具有我將必須從下拉列表中獲得的roleID的用戶的用戶名。數據沒有出現在GridView中。看不出有什麼問題,請幫助我。 已經嘗試過2種方式用sql數據填充GridView

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     SqlConnection con = new SqlConnection(cs); 
     con.Open(); 
     SqlCommand cmd = new SqlCommand("select username from tblUser where roleID like '" + DropDownList1.SelectedValue + "'", con); 

     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 
     GridView2.DataSource = dt; 
     GridView2.DataBind(); 
     con.Close(); 
    } 

protected void Button2_Click(object sender, EventArgs e) 
{ 
    SqlConnection con = new SqlConnection(cs); 
    con.Open(); 
    SqlCommand cmd = new SqlCommand("select username from tblUser where roleID like '" + DropDownList1.SelectedValue + "'", con); 

    SqlDataReader reader = cmd.ExecuteReader(); 

    GridView2.DataSource = reader; 
    GridView2.DataBind(); 
    con.Close(); 
} 
+1

您是否嘗試過調試?如果您直接通過對角色ID進行硬編碼來運行查詢,是否會得到任何結果? – 2014-12-05 03:36:02

+0

我看不到任何連接字符串到數據庫...簡單的SQL命令是不夠的。 – Yasskier 2014-12-05 03:36:25

+0

'dt'實際上是否包含任何行? – 2014-12-05 03:36:54

回答

0

好了,所以對我來說這一個工作。你也必須檢查來源。就像我的GridView發生了什麼,它說AutoGenerateColumns = false,我刪除它。這一切都奏效了!

protected void Button2_Click(object sender, EventArgs e) 
{ 
    string cs = ConfigurationManager.ConnectionStrings["roleDB"].ConnectionString; 
    SqlConnection con = new SqlConnection(cs); 
    con.Open(); 
    SqlCommand cmd = con.CreateCommand(); 
    cmd.CommandType = CommandType.Text; 
    cmd.CommandText = "select username from tblUser where roleID like '" + DropDownList1.SelectedValue + "'"; 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    DataTable dt = new DataTable(); 
    da.Fill(dt); 
    GridView2.DataSource = dt; 
    GridView2.DataBind(); 
    con.Close(); 
} 
+1

對不起,但我將不得不在這裏更正你的答案Fel。要使用DataGrid是非常好的,你的代碼容易受到SQL注入攻擊,你可以通過用戶輸入連接一個查詢字符串(DropDownList1的值),更多信息請查看:https://www.owasp.org/index.php/SQL_Injection – Ruben 2015-12-21 10:25:52