2012-06-28 35 views
0

我有一个ASP.NET页面,其中包含文本框,下拉列表和gridview。有两种方法来填写表单,一种是当用户从gridview中选择一行时,单元格中的值填充文本框和下拉列表,另一种是用户可以直接将数据输入到表单中。 这有助于从我的数据库添加,删除和更新记录。我dropdownlists和GridView中将填充页面加载事件SQL语句值...从Gridview连接字段

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() 

因为下拉列表是从我的桌子,两列的concatentation当我在GridView中值选择一行将不会使用所选值填充下拉列表。有没有办法做一个反向类型连接来获取下拉列表来填充?我试过这个:

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

这是我填充文本框的方式,但我得到一个错误。

回答

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设置为来自查询的第二个字段returend。

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

(假设VendorNo isthe主键。)

+0

你能给我一点解释我不知道这是如何使下拉列表从GridView中的选定行填充? – developthestars

+0

在你的代码中,它不是从gridview填充,而是填充表单查询。 – David

+0

正确,但我需要它从gridview填充如果选择?这意味着下拉列表与我查询中的填充值存在,但如果我从gridview中选择一行,则需要使用该值填充下拉列表。 – developthestars

0

我想你需要投为你在你的SQL语句

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

我假设V_VendorNo使用两种不同的数据类型为int类型在你的数据库中

试试吧。