最近項目中需要使用ASPNET制作自定義查詢功能根據表的字段名稱與條件建立不同的查詢語句這就需要知道如何通過ADONET把一個表的結構顯示出來並綁定到需要顯示的控件上其實ADONET已經提供了相應的函數來做到這一點下面通過詳細的代碼實例來察看結果
由於本人通過使用Webservice來返回數據的結果便制作了GetTableSchema(string sqlStr)函數詳細代碼如下
/// <summary>
/// 名稱GetTableSchema
/// 參數string sqlStr前台查詢語句
/// 功能獲得表結構
/// 返回值DataSet
/// </summary>
[WebMethod(EnableSession=trueDescription = 獲得表結構)]
public DataSet GetTableSchema(string sqlStr)
{
DataSet ds = new DataSet();
OleDbCommand cmd = new OleDbCommand(sqlStrconn);
connOpen();
OleDbDataReader read = cmdExecuteReader();
DataTable tb = readGetSchemaTable();//注意這句話
dsTablesAdd(tb);
readClose();
connClose();
return ds;
}
當建立好Webservice後下面需要再前台把相應的表結構字段信息顯示到一個
DropDownList中但是有一個問題要解決的是我所要查詢的表字段信息在建表的時候都采用了英文字段如何把表的英文字段變為中文字段就需要一個臨時的DataSet來轉換一下在臨時的DataSet中建立一個臨時表來存儲字段的中文信息和英文信息的對照關系通過遍理整個臨時表信息來取出相對應的中文字段信息並回顯到前台WebCombo中(注由於本項目的用戶需求原因我們采用WebCombo代替了開發者的DropDownList)詳細的代碼如下
//CheckBoxList cbl = new CheckBoxList();
//復選框顯示方式為縱狀每列現實條紀錄
cblRepeatColumns = ;
//cblRepeatDirection = Horizontal;
//建立新的ListItem存放試圖表中的列值
ListItem li = new ListItem();
DataSet d = new DataSet();
DataTable t = new DataTable(t);//建立表t
DataColumn c = new DataColumn();
cDataType = SystemTypeGetType(SystemString);
cColumnName = c;
tColumnsAdd(c);
DataColumn c = new DataColumn();
cDataType = SystemTypeGetType(SystemString);
cColumnName = c;
tColumnsAdd(c);
DataColumn c = new DataColumn();
cDataType = SystemTypeGetType(SystemString);
cColumnName = c;
tColumnsAdd(c);
//r[c]:列的英文名字r[c]:列的中文名字r[c]:列的類型
DataRow r;
//通過試圖操作Webservice中的GetTableSchema函數來返回表的結構
foreach(DataRow row in usGetTableSchema(select * from zc_view_kpb)Tables[]Rows)
{
r = tNewRow();
r[c] = row[ColumnName]ToString();
string colname=;
colname = row[ColumnName]ToString();
switch (colname)
{
case KPID:
r[c] = 卡片編號;
break;
case ZJRQ:
r[c] = 折舊日期;
break;
case ZCMLID:
r[c] = 資產目錄編號;
break;
default:
break;
}
//逐個添加列的名字到復選框中
//cbl是一個CheckBoxList控件顯示表結構所有字段信息意思是讓用戶可以選擇不同的字段內容並自動生成DataGrid的列信息供用戶浏覽在此不必理會
cblItemsAdd(new ListItem(r[c]ToString()colname));
//在r[c]中存儲的內容為字段的類型+英文名稱
r[c] = row[ProviderType]ToString()+colname;
tRowsAdd(r);
}
//生成表並綁頂到下拉列表
//Wcol為WebCombo控件名稱
dTablesAdd(t);
thisWColDataSource = d;
thisWColDataMember = dTables[t]ToString();
thisWColDataTextField = c;
thisWColDataValueField = c;
thisWColDataBind();
到此我們已經把表的字段信息綁定到了需要的控件上如果要幫定到DropDownList是同樣的道理大家不妨試一下
From:http://tw.wingwit.com/Article/program/ASP/201311/21695.html