2008-11-06 24 views
0

我有一個ObjectDataSource在網頁上的ObjectDataSource1的ID。我也有一個GridView,我將ObjectDataSource.ID綁定到GridView.DataSourceID。我得到的問題是文本在文本框中更改時,代碼調用BrokerageTransactions.GetAllWithDt,它將返回一個DataTable。我想將此數據表設置爲GridView的DataSource,但它告訴我,我無法將DataSouce和DataSourceId設置在一起。我怎樣才能解決這個問題?代碼如下。也。爲什麼在使用ObjectDataSource時不能設置DataSourceID和DataSource?如何使用ObjectDataSource在代碼中將數據表格正確設置爲gridview?

感謝, X

protected void BrokerageChange(Object sender, EventArgs e) 
{ 
    BrokerageTransactions brokerageaccountdetails = 
          new BrokerageTransactions(); 

    DataSet ds = BrokerageAccount.GetBrkID2(new 
       Guid(Membership.GetUser().ProviderUserKey.ToString()), 
       ddlBrokerageDetails.SelectedItem.Text.ToString()); 

    foreach (DataRow dr in ds.Tables[0].Rows) 
    { 
     brokerageaccountdetails.BrokerageId = 
           new Guid(dr["BrkrgId"].ToString()); 
    } 

    ddlBrokerageDetails.SelectedItem.Value = 
         brokerageaccountdetails.BrokerageId.ToString(); 

    if (txtTransactionsTo.Text != "" 
     && txtTransactionsFrom.Text != "") 
     ObjectDataSource1.FilterExpression = 
     "convert(CreateDt,System.DateTime)>Convert('" + 
     Convert.ToDateTime(txtTransactionsFrom.Text) + "',System.DateTime) 
     and Convert(CreateDt,System.DateTime)<convert('" 
     + Convert.ToDateTime(txtTransactionsTo.Text.ToString()) + 
     "',System.DateTime)"; 
    else if (txtTransactionsFrom.Text != "") 
      ObjectDataSource1.FilterExpression = 
      "convert(CreateDt,System.DateTime)>convert('" + 
      Convert.ToDateTime(txtTransactionsFrom.Text) + 
      "',System.DateTime)"; 
    else if (txtTransactionsTo.Text != "") 
      ObjectDataSource1.FilterExpression = 
      "convert(CreateDt,System.DateTime) 
      <convert('" 
      + Convert.ToDateTime(txtTransactionsTo.Text.ToString()) + 
      "',System.DateTime)"; 
    else 
     ObjectDataSource1.FilterExpression = " "; 

    grvBrokerage.DataSourceID = ObjectDataSource1.ID; 
    grvBrokerage.DataBind(); 

    DateTime dtTransFrom = Convert.ToDateTime("1/1/1900"); 
    DateTime dtTransTo = System.DateTime.Today; 

    //TransactionsTo Box is Empty 
    if ((txtTransactionsFrom.Text.Length > 2) 
    && (txtTransactionsTo.Text.Length < 2)) 
    { 
     dtTransFrom = Convert.ToDateTime(txtTransactionsFrom.Text); 
     dtTransTo = System.DateTime.Today; 
    } 

    //TransactionsFrom Box is Empty 
    if ((txtTransactionsFrom.Text.Length < 2) 
    && (txtTransactionsTo.Text.Length > 2)) 
    { 
     dtTransFrom = Convert.ToDateTime("1/1/1900"); 
     dtTransTo = Convert.ToDateTime(txtTransactionsTo.Text); 
    } 

    //TransactionsFrom Box and TransactionsTo Box is Not Empty 
    if ((txtTransactionsFrom.Text.Length > 2) 
    && (txtTransactionsTo.Text.Length > 2)) 
    { 
     dtTransFrom = Convert.ToDateTime(txtTransactionsFrom.Text); 
     dtTransTo = Convert.ToDateTime(txtTransactionsTo.Text); 
    } 
    // Fails Here 
    grvBrokerage.DataSource = 
    BrokerageTransactions.GetAllWithDt(brokerageaccountdetails.BrokerageId, 
             dtTransFrom, 
             dtTransTo); 
    grvBrokerage.DataBind(); } 

回答

0

你有2種選擇:

  • 在 都不要使用ObjectDataSource控件。您只需使用DataSource 屬性並將其每次語法設置爲 。
  • 使用GridView和Add 2 plain asp的DataSourceID屬性:設置了默認值的參數。在ObjectDataSource_Selecting事件你設置這些參數通過e.InputParameters []

希望這會有所幫助。

+0

你能更具體嗎?這兩個參數是什麼? 謝謝 – Xaisoft 2008-11-06 16:47:15

相關問題