2008-11-06 7 views
0

J'ai une ObjectDataSource avec un ID de ObjectDataSource1 sur une page Web. J'ai aussi un gridview dans lequel je lie le ObjectDataSource.ID au GridView.DataSourceID. Le problème que j'obtiens est quand le texte est changé dans une zone de texte, le code appelle BrokerageTransactions.GetAllWithDt qui retourne un DataTable. Je veux définir cette datatable comme DataSource pour GridView, mais il me dit que je ne peux pas définir DataSouce et DataSourceId ensemble. Comment puis-je réparer cela? Le code est ci-dessous. Aussi. Pourquoi ne pouvez-vous pas définir un DataSourceID et un DataSource lorsque vous utilisez un ObjectDataSource?Comment définir correctement une datatable à un gridview dans le code avec un ObjectDataSource?

Merci, 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(); } 

Répondre

0

Vous avez obtenu 2 options:

  • Ne pas utiliser le ObjectDataSource à tous. Vous utilisez simplement la propriété DataSource et la définissez grammaticalement à chaque fois.
  • Vous utilisez la propriété DataSourceID de GridView et Add 2 plain asp: Paramètres avec l'ensemble de valeurs par défaut. Dans l'événement ObjectDataSource_Selecting, vous définissez ces paramètres via e.InputParameters []

Espérons que cela vous aide.

+0

Pourriez-vous être plus précis? Quels seraient ces deux paramètres? Merci – Xaisoft

+0

Ces paramètres pour vous seraient les dates De et À pour les Transactions de Brokerage Dans votre exemple de code, ce serait dtTransFrom et dtTransTo. – norbertB

Questions connexes