我正在尝试在下拉列表中绑定我的打印机名称,并在我的下拉列表中显示所有打印机名称。当我尝试获取所选项目的值时,它显示所有打印机的第一个值。以下是代码
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();
即使我选择了不同的打印机, printername
,printername1
,printername2
也显示相同的值。
答案 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