Datatable을 ObjectDataSource로 코드의 GridView에 올바르게 설정하는 방법은 무엇입니까?
-
06-07-2019 - |
문제
웹 페이지에 ObjectDatasource1의 ID가있는 ObjectDatasource가 있습니다. 나는 또한 객체 datasource.id를 gridview.datasourceid에 묶는 gridview가 있습니다. 내가 얻는 문제는 텍스트 상자에서 텍스트가 변경 될 때 코드가 brokeragetransactions.getallwithdt를 호출하여 데이터 가능을 반환한다는 것입니다. 이 데이터 가능을 GridView의 데이터 소스로 설정하고 싶지만 DataSouce와 DataSourceid를 함께 설정할 수 없다고 말합니다. 이것을 어떻게 고칠 수 있습니까? 코드는 다음과 같습니다. 또한. ObjectDatasource를 사용할 때 DataSourceId와 DataSource를 설정할 수없는 이유는 무엇입니까?
감사합니다, 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(); }
해결책
두 가지 옵션이 있습니다.
- ObjectDatasource를 전혀 사용하지 마십시오. 데이터 소스 속성을 사용하여 매번 문법적으로 설정합니다.
- GridView의 DataSourceId 속성을 사용하고 기본값 세트가있는 2 개의 일반 ASP : 매개 변수를 추가하십시오. ObjectDatasource_selecting 이벤트에서는이 매개 변수를 E.InputParameters []를 통해 설정합니다.
도움이 되었기를 바랍니다.
제휴하지 않습니다 StackOverflow