1

Studio 2010 C#とDB2UDB9.7.5の使用

次のように、WHEREIN句を使用してデータソースからグリッドビューにデータを入力しています。

<asp:SqlDataSource ID="LUWAccts" runat="server" onSelecting="gvGrid01_Selecting"
ConnectionString="<%$ ConnectionStrings:LUWHAConnect %>" 
ProviderName="<%$ ConnectionStrings:LUWHAConnect.ProviderName %>" 

SelectCommand="SELECT mycolumns FROM mytables WHERE GROUP_NAME IN ? ">
<SelectParameters>
  <asp:Parameter Name="grpList" Type="String" /> 
</SelectParameters>

WHERE句のハードコーディングは正常に機能します(つまり、WHERE GROUP_NAME IN('GROUP1'、'GROUP2'、'GROUP3')

しかし、次のように、コードビハインドでデータソースのonSelectingイベントを使用してグループリストを作成しようとしています。

protected void gvGrid01_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
  string gpList = Get_SVCACCT_Auth_Groups(Session["ThisUser"].ToString());
              //This routine returns the string "('GROUP1','GROUP2','GROUP3')"
}

grpList文字列を表示すると、実際には('GROUP1'、'GROUP2'、'GROUP3')になります。

しかし、データが表示されません。SELECTステートメントを変更したり、e.Command.Parameters.Addを使用してパラメーターリストを変更したり、ControlParemetersを使用したりするために、さまざまな手法を検索して試しました。

また、WHERE IN句がコンマ区切りのリストパラメータを処理できない方法についての投稿を読みましたが、INキーワードはテーブルに対してクエリを実行できます。

私のgpListは別のSELECTステートメントから作成されていませんが、運が悪かったので、これのいくつかの例を試しました。初心者であること-私は解決策の周りで踊っているようです。

これに答えるのに役立つ投稿を見逃した場合はお知らせください。どんな助けでもいただければ幸いです。

4

3 に答える 3

0

gvGrid01_Selectingイベントでこれを試すことができます

LUWAccts.SelectCommand = 
String.Format("SELECT mycolumns FROM mytables WHERE GROUP_NAME IN {0})",
Get_SVCACCT_Auth_Groups(Session["ThisUser"].ToString()));

このリンクを確認してください

于 2013-03-19T19:34:03.703 に答える
0

最後に、Likeを使用してORで結合することにしました。だから私はアイテムのリストを繰り返して、フィルターのように追加し、次のようなものを添付します:

string[] allStr = recieveFilter.Split(',');
string filterRecieverItem = "";
foreach (string recieveItem in allStr)
{
   filterRecieverItem += "(sampleField like '%" + recieveItem.Trim() + "%') OR ";
}
filterRecieverItem = filterRecieverItem.Remove(filterRecieverItem.Length - 3, 3);
ds_Sample.FilterExpression = filterStr;

この助けを願っています。

于 2013-07-03T07:22:11.083 に答える
0

また、ユーザーVisDev String.Format( "SELECT mycolumns FROM mytables WHERE GROUP_NAME IN({0})"、yourparamlist)のようなことを行うことをお勧めします。

yourparamlistはどこにありますか

「value1、value2、value3」は単なるヒントなので、要件に応じて実装できます。

それがあなたの問題を解決することを願っています。

于 2013-11-27T03:12:19.690 に答える