0

ドロップダウンにプリンター名をバインドしようとしていますが、ドロップダウンにすべてのプリンター名が表示されます。選択したアイテムの値を取得しようとすると、すべてのプリンターの最初の値が表示されます。以下はコードです

プリンター名をバインドするコード:

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、、別のプリンタを選択しても同じ値が表示されますprintername1printername2

4

2 に答える 2

2

ページが読み込まれるたびにデータバインディングが発生していないことを確認してください。(if(!page.ispostback)を使用)

于 2012-12-28T08:57:58.657 に答える
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
于 2012-12-28T09:03:50.957 に答える