2016-12-19 15 views
1

ここは私の状況です。ページング、グループ化、フィルタリングを実行したい私はpage_initメソッドを使用しているので。私のコードに従って、うまくいきます。しかし、ユーザーはwhere節条件だけを与えることができますasp.netのPage_initメソッドでテキストボックスの値を取得する方法は?

たとえば、私のページにはテキストボックスがあります。そのテキストボックスのユーザーでそのテキストボックスID="txtQuery"は、だから、私は、これは、レコードが表示されますよう

cmd.commandText="select * from TABLE_NAME where "+txtQuery.text 

の下に私のコードを作成する必要がありitemID='45366'のようなwhere句を入力します。これは今問題です。上記のようにcmd.commandTextを作成すると、エラーがスローされます。

System.Data.SqlClient.SqlException: 'where'の近くに構文が正しくありません。

私が直接お伝えした場合、間違いなく正常に動作しています。

これは、あなたがtxtQuery.Textが空である、にあなたのgetWhereQueryを変更(最初のページのロード時に)デフォルトでは私のコード

string whereQuery = ""; 
protected void Page_Init(object sender, EventArgs e) 
{ 
    // initialize SomeDataTable 
    if (IsPostBack) 
    { 
     string cs = ConfigurationManager.ConnectionStrings["HQMatajerConnectionString"].ConnectionString; 
     whereQuery = getWhereQuery(); 
     //Response.Write("<br/><br/><br/><br/>" + whereQuery); 
     using (SqlConnection con = new SqlConnection(cs)) 
     { 
      string query = @"select transactions.storeid as StoreID, YEAR(transactions.Time) Year, MONTH(transactions.Time) Month, 
         transactionsEntry.TransactionNumber,transactionsEntry.Quantity, 
         items.ItemLookupCode,items.DepartmentID,items.CategoryID,items.SubDescription1, 
         suppliers.SupplierName,suppliers.Code 
         FROM  [HQMatajer].[dbo].[Transaction] as transactions 
         RIGHT JOIN [HQMatajer].[dbo].[TransactionEntry] as transactionsEntry 
         ON transactions.TransactionNumber=transactionsEntry.TransactionNumber 
         INNER JOIN [HQMatajer].[dbo].[Item] as items 
         ON transactionsEntry.ItemID=items.ID 
         INNER JOIN [HQMatajer].[dbo].[Supplier] as suppliers 
         ON items.SupplierID=suppliers.ID 
         where "+whereQuery; //I tried with txtQuery.text as well it doesn't work 

      SqlCommand cmd = new SqlCommand(); 



      cmd.Connection = con; 
      cmd.CommandText = query; 
      con.Open(); 

      SqlDataAdapter sda = new SqlDataAdapter(cmd); 

      sda.Fill(ds); 
      //SqlDataReader rd = cmd.ExecuteReader(); 

      //ASPxGridView1.Columns.Clear(); 
      ASPxGridView1.AutoGenerateColumns = true; 
      ASPxGridView1.DataSource = ds; 
      ASPxGridView1.DataBind(); 
     } 
    } 

} 


protected string getWhereQuery() 
{ 
    string query = txtQuery.Text; 
    return query; 
} 

答えて

2

です:今、どのように私は、テキストボックスの値を取得することができます

protected string getWhereQuery() 
{ 
    string query = txtQuery.Text; 
    if(string.IsNullOrEmpty(query)) 
    query=" 1=1"; 
    return query; 
} 
+0

今? –

+1

しかし、上記のコードは既にそれを行っています。なぜなら、あなたはPage_Loadに含まれていないものをすべて呼び出すのがなぜ正しいのでしょう。 –

+0

あなたは正しいです。今、私は分かる。次に、page_initメソッドの使用は何ですか? plzを説明できます –

関連する問題