从Gridview连接字段

时间:2012-06-28 13:00:25

标签: asp.net gridview drop-down-menu concatenation

我有一个包含文本框,下拉列表和gridview的ASP.NET页面。填写表单有两种方法,一种是当用户从gridview中选择一行时,单元格中的值填充文本框和下拉列表,另一种是用户可以直接将数据输入到表单中。 这有助于添加,删除和更新我的数据库中的记录。我的下拉列表和gridview填充了页面加载事件中的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()

因为下拉列表是我的表中两列的连接,所以当我在gridview中选择一行时,该值不会使用所选值填充下拉列表。有没有办法进行反向类型连接以使下拉列表填充?我试过这个:

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

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

2 个答案:

答案 0 :(得分: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是主键。)

答案 1 :(得分:0)

我认为您需要CAST,因为您在sql语句中使用了两种不同的数据类型

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

我假设数据库中的V_VendorNo是Int类型

试试吧。