0

テキストボックス、ドロップダウンリスト、およびグリッドビューを含む ASP.NET ページがあります。フォームに入力する方法は 2 つあります。ユーザーがグリッドビューから行を選択すると、セルの値がテキスト ボックスとドロップダウンリストに取り込まれます。もう 1 つは、ユーザーがデータをフォームに直接入力できる方法です。これは、データベースのレコードを追加、削除、および更新するのに役立ちます。私のドロップダウンリストとグリッドビューには、ページ読み込みイベントのSQLステートメントからの値が入力されています...

DROPDOWNLIST:
 dt = dal.FillDataTable(dbType.SqlServer, "SELECT V_VendorNo + ' | ' + V_VendorName FROM VendorTbl")
    ddlVendorEncum.DataSource = dt
    ddlVendorEncum.DataTextField = dt.Columns.Item(0).ToString
    ddlVendorEncum.DataValueField = dt.Columns.Item(0).ToString
    ddlVendorEncum.DataBind()

GRIDVIEW:
dts = dal.ExecuteSelectStoredPro(dbType.SqlServer, "EncumBugSearch", "@year", lblDef_FY.Text)
    gvEncumbered.DataSource = dts
    gvEncumbered.DataBind()

ドロップダウン リストはテーブルの 2 つの列を連結したものであるため、グリッドビューで行を選択すると、選択した値がドロップダウン リストに入力されません。ドロップダウンリストに入力するために逆型連結を行う方法はありますか? 私はこれを試しました:

ddlVendorEncum.Text = gvEncumbered.SelectedRow.Cells(1).ToString

これはテキストボックスに入力する方法ですが、エラーが発生します。

4

2 に答える 2

0

あなたが使用することができます

string s = dt.Columns.Item(0).ToString().Split("|".ToCharArray());

次に、配列の最初の項目を使用します (s[0]),ただし、これは難しい方法です。もっと簡単な方法があります。


変化する

SELECT V_VendorNo + ' | ' + V_VendorName FROM VendorTbl

SELECT V_VendorNo + ' | ' + V_VendorName, VendorNo FROM VendorTbl

次に、DataValueField をクエリから返された 2 番目のフィールドに設定します。

ddlVendorEncum.DataTextField = dt.Columns.Item(0).ToString 
ddlVendorEncum.DataValueField = dt.Columns.Item(1).ToString 

(VendorNo が主キーであると仮定します。)

于 2012-06-28T13:05:37.037 に答える
0

SQLステートメントで2つの異なるデータ型を使用しているため、キャストする必要があると思います

SELECT CAST(V_VendorNo AS Char(10)) + ' | ' + V_VendorName FROM VendorTbl

V_VendorNo が DB の Int 型であると想定しています

それを試してみてください。

于 2012-06-28T13:16:04.003 に答える