我有一個下拉串列。我從 oracle 資料庫獲取資料作為資料集我想用資料集值(資料文本欄位和資料值欄位)填充下拉串列。來自資料庫的資料正常,但我無法將這些值與我的下拉串列系結。“ds”是資料集。
ddlDepartment.DataValueField = ds. Tables[0].Rows[0]["DEPARTMENT"].ToString();
ddlDepartment.DataTextField = ds. Tables[0].Rows[0]["DEPARTMENT_NAME"].ToString();
uj5u.com熱心網友回復:
我想你可能理解錯了。
下拉組合有一個簡單的設定,允許您“設定”資料源中的 WHAT 值,這些值將從您“提供”下拉串列的資料表中使用。
所以,你可以有這個標記:
<asp:DropDownList ID="DropDownList1" runat="server"
Height="26px" Width="207px"
DataValueField="ID"
DataTextField="HotelName"
>
</asp:DropDownList>
因此,您可以設定使用的兩列 - 它們不是用于向下拉串列提供資料。
您還可以在代碼中設定上述兩列 - 但很少需要這樣做。
例如:
DropDownList1.DataValueField = "ID";
DropDownList1.DataTextField = "HotelName";
一旦你設定了上面的內容,你現在可以自由地查詢資料庫,加載一個資料表,然后將該“表”分配給下拉串列。
你這樣做:
DataTable rstData = new DataTable();
using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.TEST4))
{
string strSQL = "SELECT ID,HotelName, City FROM tblHotels ORDER BY HotelName";
using (SqlCommand cmdSQL = new SqlCommand(strSQL, conn))
{
conn.Open();
rstData.Load(cmdSQL.ExecuteReader());
DropDownList1.DataSource = rstData;
DropDownList1.DataBind();
// add one blank row selection.
DropDownList1.Items.Insert(0, new ListItem("- Select.. -", "0"));
}
}
所以,請注意資料表是如何有 3 列的,但是您希望將 fo 用于下拉串列中的哪一個?您有兩列 - 典型的“ID”或“PK”值,然后第二列是文本描述。
現在,我正在使用 SqlProvider(用于 sql 服務器)。您必須用 OracleSQLcommand 和連接替換 SqlCommand。但是資料表和填充下拉串列的代碼與上述相同 - 無論您使用什么資料提供者。
所以這兩個設定(DataValueField、DataTextField)不是提要資料,而只是設定要使用資料表中的哪些列。我的示例有 3 列,但該表中可能有 20 列 - 因此這兩個設定確定要使用哪兩列。通常你可能有一個簡單的下拉選單來選擇一種顏色或類似的顏色——因此你只需要一列。在這種情況下,將兩個值/文本欄位設定為同一列。
uj5u.com熱心網友回復:
我能夠在頁面加載時按如下方式填充資料集
`private void filldepartment()
{
UserClass obj = new UserClass();
DataSet ds2 = new DataSet();
ds2.Merge(obj.departments());
ddlDepartment.DataSource = ds2.Tables[0];
ddlDepartment.DataTextField = "DEPARTMENT_NAME";
ddlDepartment.DataValueField = "DEPARTMENT_ID";
ddlDepartment.DataBind();
}`
然后找到如下值
ddlDepartment.DataSource = ds;
ddlDepartment.DataBind();
uj5u.com熱心網友回復:
調整了您的代碼版本,洗掉了不必要的操作:
private void FillDepartmentDropDown()
{
UserClass obj = new UserClass();
var dt = obj.GetDepartments();
ddlDepartment.DataTextField = "DEPARTMENT_NAME";
ddlDepartment.DataValueField = "DEPARTMENT_ID";
ddlDepartment.DataSource = dt;
ddlDepartment.DataBind();
}
然后 GetDepartments 可能看起來像:
public DataTable GetDepartments(){
using var da = new OracleDataAdapter(
"SELECT department_id, department_name FROM departments ORDER BY NLSSORT(department_name, 'NLS_SORT=GENERIC_M')",
_connstr
);
var dt = new DataTable();
da.Fill(dt);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/396678.html
