- - PR -
System.Web.HttpException: IListSourceに・・・
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-10-14 11:45
はじめまして。
Googleで検索しても全言語で数件しかひっかかってくれず どなたかご存知の方があればと思い、参入しました。 当方、 VB.NET + SQL Server2000にてASP.NETの開発をしています。 現在起こっているエラーは 「System.Web.HttpException: IListSource に、データソースがありません」 (The IListSource does not contain any data sources) というものです。 内容は、 作成したDataTableの中に、DataReaderを使用してデータをいれ それをViewにして返し、DataGridのDataSourceに指定して DataBind()しています。 わざわざviewにしているのはそのままDataTableを入れると 以前うまくいかなかったからですが、 代わりにそのまま作成したDataTableを入れてもうまくいきません。 1、Bindの直前にこのDataTableにレコードが存在することは確認済み 2、以前同様のやり方でうまくいっていたソースを参考にした HTMLソースでは <asp:DataGrid id="GRD_RESULT" runat="server" ShowHeader="False"></asp:DataGrid> コード上では(m_tblを、DataViewとする) Me.GRD_RESULT.DataSource = m_tbl Me.GRD_RESULT.DataBind() ←(エラーはここで発生) としています。 どなたか、このエラーについて少しでもご存知の方があれば ご教授ください。 |
|
投稿日時: 2003-10-15 00:41
DataReader使わずに最初からDataSet使ってやってみてはどうでしょう。
ソースの提示が無いので分かりませんが、どこかでミスってるような気がします。 |
|
投稿日時: 2003-10-15 09:27
>びでさん。
ご返答ありがとうございます。 DataSetを使ってみたらというアドバイスですが 私がDataSetを使っているのは SQLで返したレコードを、.NET側でさらに計算をして DataTableに組み込んでいるからです。 (更にいうと、ヘッダが二次元になっているので それも一緒に入れてしまってますが) 私もどこかでミスっているような気がするんですが このエラーがなんのことやら分からないので 原因がつかめないでいます。 DataTableにちゃんとレコードが入っていて Bindしたグリッド(GRD_RESULT)をウォッチ式にかけてみても ちゃんとDataTableが入って、カウントも取れているようなのですが。 DataTable作成の内容は、長いですが以下のように。 DataReaderを使用せずにこれを実行する方法を 私は思いつかなかったのです。 このあとで前出のように DataSeourceに指定して、Bindしています ----------------------------------------------- Private Sub Sub_intoDataTable(ByRef intErr As Integer) Dim strSql As String Dim dReader As System.Data.SqlClient.SqlDataReader Dim intRecordCnt As Integer Dim row As DataRow Dim col As DataColumn Dim intCntRow As Integer Dim strBU As String = "" Dim decSum As Decimal = 0 Dim decJ_V As Decimal = 0 Dim dblRateV As Double = 0 Dim decJ_A As Decimal = 0 Dim dblRateA As Double = 0 Dim decJ_L As Decimal = 0 Dim dblRateL As Double = 0 Dim decJ_U As Decimal = 0 Dim dblRateU As Double = 0 Dim decJ_Pnt As Decimal = 0 Dim decM_Pnt As Decimal = 0 'エラーなし intErr = m_NoErr Try '内部関数によるコネクションオブジェクト作成。 DB.ConnectionString = "SqlConn1" DB.Open() strSql = "(ここでストアド)" DB.SqlText = strSql '内部関数で、ここでデータをExecuteしてます dReader = DB.ExecuteQuery() 'EOFをエラーで返す If Not dReader.HasRows Then intErr = m_Err_EOF 'エラー番号を返す End If intCntRow = 0 While dReader.Read() '新規レコード追加 row = m_tbl.NewRow() Select Case intCntRow 'ヘッダー部分の作成 Case 0 row("BU") = "単位:台数,%" row("品種") = "" row("合計") = "" row("V") = "V" row("V2") = "" row("V3") = "" row("A") = "A" row("A2") = "" row("A3") = "" row("L") = "L" row("L2") = "" row("L3") = "" row("U") = "U" row("U2") = "" row("U3") = "" row("ポイント") = "ポイント" row("ポイント2") = "" Case 1 row("BU") = "" row("品種") = "" row("合計") = "合計" row("V") = "実績" row("V2") = "構成比" row("V3") = "対期首差" row("A") = "実績" row("A2") = "構成比" row("A3") = "対期首差" row("L") = "実績" row("L2") = "構成比" row("L3") = "対期首差" row("U") = "実績" row("U2") = "構成比" row("U3") = "対期首差" row("ポイント") = "実績" row("ポイント2") = "対期首差" Case Else '一行目でなく、前項のBU名に等しくないとき 'そのまま値を入れる If strBU <> dReader.GetValue(m_intColBU) And intCntRow <> 2 Then Select Case decSum Case 0 row("BU") = dReader.GetValue(m_intColBU) row("品種") = "" row("合計") = decSum row("V") = "" row("V2") = 0 row("V3") = "" row("A") = "" row("A2") = 0 row("A3") = "" row("L") = "" row("L2") = 0 row("L3") = "" row("U") = "" row("U2") = 0 row("U3") = "" row("ポイント") = decJ_Pnt row("ポイント2") = decM_Pnt Case Else row("BU") = dReader.GetValue(m_intColBU) row("品種") = "" row("合計") = decSum row("V") = "" row("V2") = 100 * decJ_V / decSum row("V3") = "" row("A") = "" row("A2") = 100 * decJ_A / decSum row("A3") = "" row("L") = "" row("L2") = 100 * decJ_L / decSum row("L3") = "" row("U") = "" row("U2") = 100 * decJ_U / decSum row("U3") = "" row("ポイント") = decJ_Pnt row("ポイント2") = decM_Pnt End Select strBU = dReader.GetValue(m_intColBU) 'データを初期化する decSum = 0 decJ_V = 0 dblRateV = 0 decJ_A = 0 dblRateA = 0 decJ_L = 0 dblRateL = 0 decJ_U = 0 dblRateU = 0 decJ_Pnt = 0 decM_Pnt = 0 Else 'm_intCol****はカラム番号をConstで設定 row("BU") = "" row("品種") = dReader.GetValue(m_intColSummary) row("合計") = dReader.GetValue(m_intColSum) row("V") = dReader.GetValue(m_intColJ_V) row("V2") = dReader.GetValue(m_intColRateV) row("V3") = dReader.GetValue(m_intColM_V) row("A") = dReader.GetValue(m_intColJ_A) row("A2") = dReader.GetValue(m_intColRateA) row("A3") = dReader.GetValue(m_intColM_A) row("L") = dReader.GetValue(m_intColJ_L) row("L2") = dReader.GetValue(m_intColRateL) row("L3") = dReader.GetValue(m_intColM_L) row("U") = dReader.GetValue(m_intColJ_U) row("U2") = dReader.GetValue(m_intColRateU) row("U3") = dReader.GetValue(m_intColM_U) row("ポイント") = dReader.GetValue(m_intColJ_Pnt) row("ポイント2") = dReader.GetValue(m_intColM_Pnt) strBU = dReader.GetValue(m_intColBU) decSum += dReader.GetValue(m_intColSum) decJ_V += dReader.GetValue(m_intColJ_V) dblRateV += dReader.GetValue(m_intColRateV) decJ_A += dReader.GetValue(m_intColJ_A) dblRateA += dReader.GetValue(m_intColRateA) decJ_L += dReader.GetValue(m_intColJ_L) dblRateL += dReader.GetValue(m_intColRateL) decJ_U += dReader.GetValue(m_intColJ_U) dblRateU += dReader.GetValue(m_intColRateU) decJ_Pnt += dReader.GetValue(m_intColJ_Pnt) decM_Pnt += dReader.GetValue(m_intColM_Pnt) End If End Select m_tbl.Rows.Add(row) '次へカウント intCntRow += 1 End While row = m_tbl.NewRow '最終行のBU合計をうめる。 Select Case decSum Case 0 row("BU") = strBU row("品種") = "" row("合計") = decSum row("V") = "" row("V2") = 0 row("V3") = "" row("A") = "" row("A2") = 0 row("A3") = "" row("L") = "" row("L2") = 0 row("L3") = "" row("U") = "" row("U2") = 0 row("U3") = "" row("ポイント") = decJ_Pnt row("ポイント2") = decM_Pnt Case Else row("BU") = strBU row("品種") = "" row("合計") = decSum row("V") = "" row("V2") = 100 * decJ_V / decSum row("V3") = "" row("A") = "" row("A2") = 100 * decJ_A / decSum row("A3") = "" row("L") = "" row("L2") = 100 * decJ_L / decSum row("L3") = "" row("U") = "" row("U2") = 100 * decJ_U / decSum row("U3") = "" row("ポイント") = decJ_Pnt row("ポイント2") = decM_Pnt End Select m_tbl.Rows.Add(row) Catch ex As Exception 'エラー処理 Finally DB.Close() End Try End Sub [ メッセージ編集済み 編集者: webneko 編集日時 2003-10-15 09:56 ] |
|
投稿日時: 2003-10-15 10:45
すみません。
自己レスです。 いまいち理由が分からないのですが エラーが出た状態で回避しようとして 宣言の部分をNewにしたりやめたりしていたら 出ました。 結局ソースは前と変わってないんですけど なんだったんでしょうか、このエラー・・・ (意味不明) お騒がせいたしました。 |
1