0
私はループを繰り返し実行しています。ループを通過するたびに、より多くの行が同じデータテーブルに追加されるという考え方です。私はfillメソッドを使うことでこれが当てはまることを理解しました。しかし、私のコードでは、最後のデータテーブルは最後のループの結果です。ここに私のコードです:sqldataAdapter.Fillを使用してDatatableを追加する
呼び出し方法
// declare a new new datatable to hold the results of the query
DataTable dtResults = new DataTable();
foreach (OrgChartNode node in RadOrgChart1.GetAllNodes())
{
Label label1 = (Label)node.GroupItems[0].FindControl("Label1");
foreach (OrgChartRenderedField rf1 in node.GroupItems[0].RenderedFields)
{
if (rf1.Label == "ibl")
{
string[] iblWords = rf1.Text.Split(':');
string iblId = iblWords[0].Trim();
string[,] sqlParam01 =
{
{ "@document_id", iblId },
{ "@class_id", "123" }
};
dtResults = Helper.GetDataTablePrime(SQL_Default.SQL_Report, sqlParam01, dtResults);
}
}
RadGrid2.DataSource = dtResults;
RadGrid2.DataBind();
は、ここGetDataTablePrime方法である:
public static DataTable GetDataTablePrime(string query, string[,] sqlParameters, DataTable dtContents)
{
String connString = "Data Source=*********************************";
SqlDataAdapter adapter = new SqlDataAdapter();
using (SqlConnection conn = new SqlConnection(connString))
{
adapter.SelectCommand = new SqlCommand(query, conn);
// loop through adding parameters
for (int i = 0; i <= sqlParameters.GetUpperBound(0); i++)
{
adapter.SelectCommand.Parameters.Add(new SqlParameter(sqlParameters[i, 0], sqlParameters[i, 1]));
}
adapter.Fill(dtContents);
conn.Close();
}
return dtContents;
}
は何かが場違いに見えるでしょうか?
"ヘルパー"メソッドのすべてを準備するコードは、DBプロバイダを直接使用するよりも複雑で、あいまいで正確さが低いです。 – Plutonix