クライアント側のADO.NET呼び出しがデータセットの入力に失敗する
質問
aspxファイルのスクリプトセクションで、クライアント側からSQL Server呼び出しを行う必要があるASP.NET Webページがあります。 1つのパラメーターを使用するストアドプロシージャを呼び出しています。このspは、期待どおりにレコードを返すSQL Server Management Studioで正常に機能します。このspの呼び出しからデータセットを埋めようとすると、dsはゼロレコードで埋められます。クライアント側からこの呼び出しを行うことについて何かありますか?これが私のコードです。テスト用にparmをハードコーディングしています。 PS-私はこれを試してみましたが、空のデータセットだけでエラーは発生しませんでした。Thnx。
string strAssignedTo = "Dwight Shoemaker";
System.Data.DataSet ds = new System.Data.DataSet();
System.Data.SqlClient.SqlConnection sqlcon = new System.Data.SqlClient.SqlConnection("Data Source=sql394.mysite4now.com;Initial Catalog=ULS_db1;User ID=uls2008;Password=uls2008");
System.Data.SqlClient.SqlCommand comand = new System.Data.SqlClient.SqlCommand();
comand.Connection = sqlcon;
comand.CommandText = "GetAssignedToReport";
comand.CommandType = System.Data.CommandType.StoredProcedure;
comand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@assignedTo", System.Data.SqlDbType.VarChar, 50));
comand.Parameters["@assignedTo"].Value = strAssignedTo;
System.Data.SqlClient.SqlDataAdapter sqladp = new System.Data.SqlClient.SqlDataAdapter(comand);
sqlcon.Open();
sqladp.Fill(ds);
解決
私はあなたのコードを試してみましたが、大丈夫でした。間違っている可能性があるのはこれです:
gridViewを次のようにバインドしようとした場合:
gridView.DataSource= ds;
何も表示されません。私はあなたの例を試しましたが、以前のコードの代わりに、gridViewを次のようにバインドしました:
gridView.DataSource = ds.Tables[0];
私はあなたの記録を見ます。
列名:assign_dt、値は7/5 / 2005、5 / 2/2005など。これはあなたが期待することです。
よろしく
他のヒント
意味がわからない:ASP.Net C#コードは常にWebサーバーで常に実行され、クライアント側では決して実行されません。この2つは混ざり合いません。
コメントに基づいて更新:
<!> quot; script <!> quot;の宣言方法は?それを行うには2つの方法があります:
-
単一の
<script runat="server"> //code here </script>
要素。これにより、ページの読み込みを含む、あらゆるページイベントを処理できます。 -
インラインスクリプト要素/ bee-stings。
<% %>
マークアップに点在するタグ。これらのタグのコードはページの読み込み時に実行されるのはよくある誤解です。 <!> quot;誤解<!> quot;という言葉の私の使用から集めたかもしれないので、これは間違っているです。これらのタグのコードは、ページのライフサイクルのかなり後まで実行されません(PreRender、IIRC)。
2番目の項目、特にこのコードはデータバインディングフェーズが既に after 終了していることに注意してください。そのデータセットをコントロールのデータソースとして使用する場合は、手動でDataBind()する必要があります。