dataset
aを aにバインドしようとしていますdropdownlist
が、これは a をスローしますHttpException
これが私がやろうとしていることです
if (dsGroupsNotOnFestival.Tables[0].Rows.Count > 0)
{
//Bind dataset to new group selection
ddlNewGroup.DataSource = dsGroupsNotOnFestival.Tables[0].DefaultView;
ddlNewGroup.DataValueField = "band_id";
ddlNewGroup.DataTextField = "band_naam";
ddlNewGroup.DataBind();
}
else
{
ddlNewGroup.Items.Add(new ListItem("No groups to add"));
}
例外メッセージ:
DataBinding: 'System.Data.DataRowView' does not contain a property with the name 'band_naam'.
dataset
タイトルが band_naam の列が含まれていることは間違いありません。ご覧のとおり、 をバインドすると例外がスローされます。これは、が正しくバインドされDataTextField
ていることを意味します。DataValueField
編集:
これはストアド プロシージャです。
USE [groep2_festivals]
GO
/****** Object: StoredProcedure [dbo].[GetGroupsOfFestival] Script Date: 14-05-13 12:31:18 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Robbie Vercammen
-- Create date: 2013-05-09
-- Description: Getting all groups for a defined festival
-- =============================================
ALTER PROCEDURE [dbo].[GetGroupsOfFestival]
(
@festId nvarchar(4)
)
AS
BEGIN
DECLARE @query varchar(255)
SELECT b.*, p.*
FROM bands b
JOIN bandsperfestival bpf ON b.band_id = bpf.band_id
JOIN podia p ON p.pod_id = bpf.pod_id WHERE fest_id LIKE @festId
EXEC(@query)
END
b.*
とbands b
?に注意してください。ここでそのテーブル:
このストアド プロシージャは何度も使用されているので、正しく動作することは間違いありません。しかし、これはおそらく私が言及するのを忘れた最も重要なコードです:
//Filling dataset with groups not on this festival
dsGroupsNotOnFestival.Tables.Add(new DataTable());
foreach (DataRow row in dsGroupsAll.Tables[0].Rows)
{
if (!dsGroupsPerFestival.Tables[0].Rows.Equals(row))
{
dsGroupsNotOnFestival.Tables[0].ImportRow(row);
}
}
繰り返しますが、DataSet
dsGroupsAll は以前に使用されているため、データが存在します:)
@manish mishra dsGroupsAll は、上記と同じストアド プロシージャで満たされています。そこに実際にデータがあることを証明するには:
まだフォローしている方は、 に14行あることを確認しましたdsGroupsNotOnFestival
。たとえば、単純な方法で値を取得しようとしている場合:
String strResult = dsGroupsNotOnFestival.Tables[0].Rows[0][0].ToString();
列 0 が見つからないという例外が発生しました...なぜですか?