Как использовать DataSet вместо DataTable в C#
У меня есть следующий шаблон, который заполняет мой UL
с данными, полученными из DataTable:
DataTable dt = getData(); //Insert your datasource here
foreach(DataRow row in dt.Rows){
HtmlGenericControl li = new HtmlGenericControl("li");
li.Attributes.Add("data-trait-id", row["TraitID"].ToString());
HtmlAnchor a = new HtmlAnchor();
a.Attributes.Add("data-trait-id", row["TraitID"].ToString());
HtmlGenericControl span1 = new HtmlGenericControl("span");
span1.Attributes.Add("class", "name");
span1.InnerText = row["Name"].ToString();
a.Controls.Add(span1);
HtmlGenericControl span2 = new HtmlGenericControl("span");
span2.Attributes.Add("class", "count");
span2.InnerText = row["Count"].ToString();
a.Controls.Add(span2);
li.Controls.Add(a);
ulSpecialty_selector.Controls.Add(li);
}
Но на моей странице я использую DataSet для получения столбцов из SQL-запроса:
protected void Page_Load(object sender, EventArgs e)
{
using (OleDbConnection connection = new OleDbConnection("Provider=MSDataShape;Data Provider=SQLOLEDB;" + "Data Source=svr;Initial Catalog=db;User ID=zh;Password=zha")) {
OleDbDataAdapter adapter = new OleDbDataAdapter("SHAPE {SELECT * FROM [db].[dbo].[BookingTable]} ", connection);
DataSet dsLocation = new DataSet();
adapter.Fill(dsLocation, "Location");
}
}
Как я могу использовать первый блок кода для работы со вторым блоком кода, чтобы я мог сгенерировать LI
внутри UL
?
Я хочу подражать следующему:
<ul class="ulLocation" id="ulLocation2_selector" runat="server">
<li class="liSubLocation active" data-trait-id="9">
<a href="/locations/new-york/neighborhoods?tags[]=12&tags[]=66" class="premote trait-link large btn" data-trait-id="9">
<span class="check"><i class="icon icon-ok"></i></span>
<span class="name">New Rochelle</span>
<span class="count">6</span>
</a>
</li>
</ul>
2 ответа
Решение
Вы можете легко преобразовать DataTable в DataSet или наоборот DataTable из DataSet
//Assuming oDS is my DataSet
DataTable oDt = oDS.Tables[0];// If you know name of datatable you may use oDS.Tables["name"]
DataSet from DataTable
//Assuming oDT is your DataTable
DataSet oDs = new DataSet();
oDs.Tables.Add(oDT);
Предполагая, что вы возвращаете набор данных из GetData(), вы можете изменить следующее:
DataSet ds = getData();
DataTable dt;
if (ds.Tables.Count > 0)
{
dt = ds.Tables[0];
}
foreach(DataRow row in dt.Rows){
...