2012-05-23 30 views
0

我可能會或可能不會爲你們提供一個非常簡單的問題。將我的if-else語句放在字符串的存在之外,我試圖用參數調用一個SELECT語句並將它們傳遞給相同的GridView。爲SQLDataSource動態使用SQL語句

這裏就是我想要做:

string query; 
if(BadgeNumLabel.Text != "") 
{ 
    query = "SELECT * FROM AUDITS"; 
else 
{ 
    query = "SELECT * FROM AUDITS WHERE BADGENUM = :BadgeNumLabel"; 
    GridDataSource.SelectParameters.Add(new Parameter("BadgeNumLabel",TypeCode.String, BadgeNumLabel.Text)); 
} 

GridDataSource.SelectCommand = query; 
GridView1.DataBind(); 

我的.aspx代碼如下所示:

<asp:SqlDataSource ID="GridDataSource" runat="server" 
      ConnectionString="<%$ ConnectionStrings:OracleConnectionString %>" 
      ProviderName="<%$ ConnectionStrings:OracleConnectionString.ProviderName %>" 
      onselecting="GridDataSource_Selecting"> 


     </asp:SqlDataSource> 

有什麼我失蹤?我很難過。我認爲它必須通過傳遞參數BadgeNumLabel來做些事情,但我不確定。

任何幫助,非常感謝!謝謝!

+0

其中your're傳遞參數值?.你也測試該SQL查詢? – Jorge

+0

我嘗試使用這樣的: GridDataSource.SelectParameters.Add(新參數( 「BadgeNumLabel」,TypeCode.String,BadgeNumLabel.Text)); 但它沒有奏效。 –

+0

所以你的意思是,你運行時沒有得到任何結果? – Rahul

回答

1

您需要將GridDataSource的結果分配給GridView1.DataSource

SqlConnection sqlConnection1 = new SqlConnection("Your Connection String"); 
SqlCommand GridDataSource= new SqlCommand(); 

GridDataSource.CommandText = "SELECT * FROM AUDITS"; 
GridDataSource.CommandType = CommandType.Text; 
GridDataSource.Connection = sqlConnection1; 

sqlConnection1.Open(); 

GridView1.DataSource = GridDataSource.ExecuteReader(); 
GridView1.DataBind(); 

編輯

這不是字面上ExecuteCommand,我儘量說的是,你需要分配的結果SqlCommand到GridView

+0

它說我輸入該行時沒有對GridDataSource.ExecuteCommand的程序集引用。 –

+0

你會在哪裏使用上面的'SqlDataReader'對象。看起來你已經創建了它,但沒有使用它。 此外,如果我已經創建了一個SQLDataSource,我是否需要開放一個新的連接? –

+0

好的,我剛剛刪除了'SqlDataReader'。你應該運行這個快速示例只需添加連接字符串,如果它工作,那麼你確定問題是你沒有把結果查詢分配給'GridView1.DataSource'。 – Luis