Как правильно установить datatable для вида сетки в коде с ObjectDataSource? - PullRequest
0 голосов
/ 06 ноября 2008

У меня есть ObjectDataSource с идентификатором ObjectDataSource1 на веб-странице. У меня также есть gridview, в котором я связываю ObjectDataSource.ID с GridView.DataSourceID. Проблема, которую я получаю, заключается в том, что при изменении текста в текстовом поле код вызывает BrokerageTransactions.GetAllWithDt, который возвращает DataTable. Я хочу установить этот тип данных как DataSource для GridView, но он говорит мне, что я не могу установить DataSouce и DataSourceId вместе. Как я могу это исправить? Код ниже. Также. Почему вы не можете установить DataSourceID и DataSource при использовании ObjectDataSource?

Спасибо, 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();  }

1 Ответ

0 голосов
/ 06 ноября 2008

У вас есть 2 варианта:

  • Не используйте ObjectDataSource в все. Вы просто используете DataSource свойство и установить его грамматически каждый раз.
  • Вы используете свойство DataSourceID GridView и добавляете два простых asp: Параметры с установленным значением по умолчанию. В событии ObjectDataSource_Selecting вы устанавливаете эти параметры с помощью e.InputParameters []

Надеюсь, это поможет.

...