下拉值不变

时间:2012-12-28 08:56:00

标签: c# asp.net visual-studio-2010

我正在尝试在下拉列表中绑定我的打印机名称,并在我的下拉列表中显示所有打印机名称。当我尝试获取所选项目的值时,它显示所有打印机的第一个值。以下是代码

绑定打印机名称的代码:

PrintModuleAX printModuleAX = new PrintModuleAX();
var result = printModuleAX.GetAllPrinterNames();
JObject o = JObject.Parse(result);
JArray sizes = (JArray)o["PrinterNames"];
var dt = new DataTable();
dt.Columns.Add("PrinterValue");
dt.Columns.Add("PrinterName");
for (int i = 0; i < sizes.Count; i++)
{
    dt.Rows.Add((string)sizes[i], (string)sizes[i]);
}
ddlPrinterName.DataSource = dt;
ddlPrinterName.DataTextField = dt.Columns["PrinterName"].ToString();
ddlPrinterName.DataValueField = dt.Columns["PrinterValue"].ToString();
ddlPrinterName.DataBind();

获取所选值的代码:

var printername = ddlPrinterName.Text.ToString();
var printername1 = ddlPrinterName.SelectedValue.ToString();
var printername2 = ddlPrinterName.SelectedItem.ToString();
即使我选择了不同的打印机,

printernameprintername1printername2也显示相同的值。

2 个答案:

答案 0 :(得分:2)

检查每个页面加载都没有发生数据绑定。 (使用if(!page.ispostback))

答案 1 :(得分:1)

尝试使用以下代码

ddlPrinterName.DataSource = dt;
//just specify the column name
ddlPrinterName.DataTextField = "PrinterName"; 
ddlPrinterName.DataValueField = "PrinterValue";
ddlPrinterName.DataBind();



var printername1 = ddlPrinterName.SelectedItem.Text; //gives text
var printername2 = ddlPrinterName.SelectedItem.Value; //gives value