datagrid中如何绑定下拉列表

qsmrbyf 2003-08-03 12:46:37
我在datagrid中用模板列加入了下拉列表控件,代码如下:
<asp:TemplateColumn HeaderText="品种标号">

<ItemTemplate>
<asp:DropDownList id="pzph" runat="server" Width="109px" SelectedIndex ='<%# DataBinder.Eval(Container, "DataItem.pzbh") %>'>
</asp:DropDownList>
</ItemTemplate>




<FooterTemplate>
<asp:DropDownList id="newpzbh" runat="server" Width="109px"></asp:DropDownList>
</FooterTemplate>
</asp:TemplateColumn>
显示时,可以显示出来,但我需要在窗口打开时,将一个字典库中的数据检索出来放入下拉列表框中,我采用了以下代码:
.......
pzbh.datasource = dspagedata.tables("snpz").defaultview
pzbh.DataValueField = "pzbh"
pzbh.DataTextField = "pzbh"
pzbh.dbtabind
End If

运行时提示以下错误:

编译器错误信息: BC30451: 名称“pzbh”未声明。

源错误:



行 97: dbcommand.fill(dspagedata,"snpz")
行 98:
行 99: pzbh.datasource = dspagedata.tables("snpz").defaultview
行 100: pzbh.DataValueField = "pzbh"
行 101: pzbh.DataTextField = "pzbh"

不知该如何进行处理,请指教。
...全文
107 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
bqljb 2003-08-04
  • 打赏
  • 举报
回复
Private Sub myGrid1_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)
后面加上: Handles myGrid1.ItemDataBound

qsmrbyf 2003-08-04
  • 打赏
  • 举报
回复
非常感谢您,我将你最后贴的代码在我机器上调试,发现在
Private Sub myGrid1_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)
事件else里面的这些代码


Else

dim dbcommand as new oledbdataadapter
dim dbconn as oledbconnection
dim dspagedata as new dataset
dim sql1 as string

dbconn = new oledbconnection("Provider=MSDAORA.1;Password=snyx;User ID=snyx;data source=snyx.world")
sql1 = "select pzbm,pzbh from pz"
dbcommand = new oledbdataadapter(sql1,dbconn)
dbcommand.fill(dspagedata,"pz")

pzbh.DataSource = dspagedata.tables("pz").defaultview
pzbh.DataValueField = "pzbh"
pzbh.DataTextField = "pzbh"
pzbh.DataBind()
pzbh.Items.FindByText(e.Item.Cells(5).Text).Selected = True
都没有执行,不知是怎么回事,但不管怎样我都非常感谢您
niqiu322 2003-08-03
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topicview.asp?id=2032092
OutcastXP 2003-08-03
  • 打赏
  • 举报
回复
Dim pzbh As DropDownList = CType(myGrid1.FindControl("pzbh"), DropDownList)
pzbh.datasource = dspagedata.tables("snpz").defaultview
pzbh.DataValueField = "pzbh"
pzbh.DataTextField = "pzbh"
pzbh.dbtabind
OutcastXP 2003-08-03
  • 打赏
  • 举报
回复
<%@ Page Language="vb"%>
<%@ import namespace="system.data.oledb"%>
<%@ import namespace="system.data"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>dj</title>
<meta content="Microsoft Visual Studio .NET 7.0" name="GENERATOR">
<meta content="Visual Basic 7.0" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:datagrid id="Datagrid1" style="Z-INDEX: 101" runat="server" Font-Name="Verdana" PageSize="3" Width="446px" AutoGenerateColumns="False" AllowSorting="True" ShowFooter="True" OnItemDataBound="myGrid1_ItemDataBound">
<Columns>
<asp:TemplateColumn HeaderText="品种标号">
<ItemTemplate>
<asp:DropDownList id="pzbh" runat="server" Width="109px">
</asp:DropDownList>
</ItemTemplate>
<FooterTemplate>
<asp:DropDownList id="newpzbh" runat="server" Width="109px"></asp:DropDownList>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="单价">
<ItemTemplate>
<asp:TextBox id="dj" runat="server" Width="109px" Text='<%# DataBinder.Eval(Container, "DataItem.dj") %>'>
</asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="newdj" runat="server" Width="109px"></asp:TextBox>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="数量">
<ItemTemplate>
<asp:TextBox id="sl" runat="server" Width="109px" Text='<%# DataBinder.Eval(Container, "DataItem.sl") %>'>
</asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="newsl" runat="server" Width="109px"></asp:TextBox>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="金额">
<ItemTemplate>
<asp:TextBox id="je" runat="server" Width="109px" Text='<%# DataBinder.Eval(Container, "DataItem.je") %>'>
</asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="newje" runat="server" Width="109px"></asp:TextBox>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Delete Contact">
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<ItemTemplate>
<asp:CheckBox Runat="server" ID="chkDelete"></asp:CheckBox>
</ItemTemplate>
<FooterStyle HorizontalAlign="Center"></FooterStyle>
<FooterTemplate>
<asp:LinkButton Runat="server" Text="增加" commandname="Add" ID="Linkbutton1"></asp:LinkButton>
</FooterTemplate>
</asp:TemplateColumn>
<asp:BoundColumn Visible="False" DataField="pzbh"></asp:BoundColumn>
</Columns>
</asp:datagrid>
<script runat="server">


sub page_load(byval sender as object,byval e as eventargs)


If Not Page.IsPostBack Then
dim dbcommand as new oledbdataadapter
dim dbconn as oledbconnection
dim dspagedata as new dataset
dim sql as string
dbconn = new oledbconnection("Provider=MSDAORA.1;Password=snyx;User ID=snyx;data source=snyx.world")
sql = "select pzbh,dj,sl,je from htxx2"
dbcommand = new oledbdataadapter(sql,dbconn)
dbcommand.fill(dspagedata,"htxx2")
DataGrid1.datasource=dspagedata.tables("htxx2").defaultview
dspagedata.acceptchanges
DataGrid1.databind


End If

end sub

Private Sub myGrid1_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)

Dim pzbh As DropDownList = CType(e.Item.FindControl("pzbh"), DropDownList)
If pzbh Is Nothing Then
Else
dim dbcommand as new oledbdataadapter
dim dbconn as oledbconnection
dim dspagedata as new dataset
dim sql1 as string

dbconn = new oledbconnection("Provider=MSDAORA.1;Password=snyx;User ID=snyx;data source=snyx.world")
sql1 = "select pzbm,pzbh from pz"
dbcommand = new oledbdataadapter(sql1,dbconn)
dbcommand.fill(dspagedata,"pz")

pzbh.DataSource = dspagedata.tables("pz").defaultview
pzbh.DataValueField = "pzbh"
pzbh.DataTextField = "pzbh"
pzbh.DataBind()
pzbh.Items.FindByText(e.Item.Cells(5).Text).Selected = True
End If
End Sub

</script>
</form>
</body>
</HTML>
OutcastXP 2003-08-03
  • 打赏
  • 举报
回复
<%@ Page Language="vb"%>
<%@ import namespace="system.data.oledb"%>
<%@ import namespace="system.data"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>dj</title>
<meta content="Microsoft Visual Studio .NET 7.0" name="GENERATOR">
<meta content="Visual Basic 7.0" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:datagrid id="Datagrid1" style="Z-INDEX: 101" runat="server" Font-Name="Verdana" PageSize="3" Width="446px" AutoGenerateColumns="False" AllowSorting="True" ShowFooter="True" OnItemDataBound="myGrid1_ItemDataBound">
<Columns>
<asp:TemplateColumn HeaderText="品种标号">
<ItemTemplate>
<asp:DropDownList id="pzbh" runat="server" Width="109px">
</asp:DropDownList>
</ItemTemplate>
<FooterTemplate>
<asp:DropDownList id="newpzbh" runat="server" Width="109px"></asp:DropDownList>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="单价">
<ItemTemplate>
<asp:TextBox id="dj" runat="server" Width="109px" Text='<%# DataBinder.Eval(Container, "DataItem.dj") %>'>
</asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="newdj" runat="server" Width="109px"></asp:TextBox>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="数量">
<ItemTemplate>
<asp:TextBox id="sl" runat="server" Width="109px" Text='<%# DataBinder.Eval(Container, "DataItem.sl") %>'>
</asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="newsl" runat="server" Width="109px"></asp:TextBox>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="金额">
<ItemTemplate>
<asp:TextBox id="je" runat="server" Width="109px" Text='<%# DataBinder.Eval(Container, "DataItem.je") %>'>
</asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="newje" runat="server" Width="109px"></asp:TextBox>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Delete Contact">
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<ItemTemplate>
<asp:CheckBox Runat="server" ID="chkDelete"></asp:CheckBox>
</ItemTemplate>
<FooterStyle HorizontalAlign="Center"></FooterStyle>
<FooterTemplate>
<asp:LinkButton Runat="server" Text="增加" commandname="Add" ID="Linkbutton1"></asp:LinkButton>
</FooterTemplate>
</asp:TemplateColumn>
<asp:BoundColumn Visible="False" DataField="pzbh"></asp:BoundColumn>
</Columns>
</asp:datagrid>
<script runat="server">


sub page_load(byval sender as object,byval e as eventargs)


If Not Page.IsPostBack Then
dim dbcommand as new oledbdataadapter
dim dbconn as oledbconnection
dim dspagedata as new dataset
dim sql as string
dbconn = new oledbconnection("Provider=MSDAORA.1;Password=snyx;User ID=snyx;data source=snyx.world")
sql = "select pzbh,dj,sl,je from htxx2"
dbcommand = new oledbdataadapter(sql,dbconn)
dbcommand.fill(dspagedata,"htxx2")
DataGrid1.datasource=dspagedata.tables("htxx2").defaultview
dspagedata.acceptchanges
DataGrid1.databind


End If

end sub

Private Sub myGrid1_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)

Dim pzbh As DropDownList = CType(e.Item.FindControl("pzbh"), DropDownList)
If pzbh Is Nothing Then
Else
dim dbcommand as new oledbdataadapter
dim dbconn as oledbconnection
dim dspagedata as new dataset
dim sql1 as string

dbconn = new oledbconnection("Provider=MSDAORA.1;Password=snyx;User ID=snyx;data source=snyx.world")
sql1 = "select pzbm,pzbh from pz"
dbcommand = new oledbdataadapter(sql1,dbconn)
dbcommand.fill(dspagedata,"snpz")

pzbh.DataSource = dspagedata.tables("pz").defaultview
pzbh.DataValueField = "pzbh"
pzbh.DataTextField = "pzbh"
pzbh.DataBind()
pzbh.Items.FindByText(e.Item.Cells(5).Text).Selected = True
End If
End Sub

</script>
</form>
</body>
</HTML>
OutcastXP 2003-08-03
  • 打赏
  • 举报
回复
Private Sub myGrid1_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)

Dim pzbh As DropDownList = CType(e.Item.FindControl("pzbh"), DropDownList)
If pzbh Is Nothing Then
Else
dim dbcommand as new oledbdataadapter
dim dbconn as oledbconnection
dim dspagedata as new dataset
dim sql1 as string

dbconn = new oledbconnection("Provider=MSDAORA.1;Password=snyx;User ID=snyx;data source=snyx.world")
sql1 = "select pzbm,pzbh from pz"
dbcommand = new oledbdataadapter(sql1,dbconn)
dbcommand.fill(dspagedata,"snpz")


pzbh.DataSource = dspagedata.tables("snpz").defaultview
pzbh.DataValueField = "pzbh"
pzbh.DataTextField = "pzbh"
pzbh.DataBind()
end if
End Sub
qsmrbyf 2003-08-03
  • 打赏
  • 举报
回复
谢谢您


<%@ Page Language="vb"%>
<%@ import namespace="system.data.oledb"%>
<%@ import namespace="system.data"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>dj</title>
<meta content="Microsoft Visual Studio .NET 7.0" name="GENERATOR">
<meta content="Visual Basic 7.0" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:datagrid id="Datagrid1" style="Z-INDEX: 101" runat="server" Font-Name="Verdana" PageSize="3" Width="446px" AutoGenerateColumns="False" AllowSorting="True" ShowFooter="True" OnItemDataBound="myGrid1_ItemDataBound">
<Columns>
<asp:TemplateColumn HeaderText="品种标号">
<ItemTemplate>
<asp:DropDownList id="pzbh" runat="server" Width="109px" SelectedIndex ='<%# DataBinder.Eval(Container, "DataItem.pzbh") %>'>
</asp:DropDownList>
</ItemTemplate>
<FooterTemplate>
<asp:DropDownList id="newpzbh" runat="server" Width="109px"></asp:DropDownList>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="单价">
<ItemTemplate>
<asp:TextBox id="dj" runat="server" Width="109px" Text='<%# DataBinder.Eval(Container, "DataItem.dj") %>'>
</asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="newdj" runat="server" Width="109px"></asp:TextBox>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="数量">
<ItemTemplate>
<asp:TextBox id="sl" runat="server" Width="109px" Text='<%# DataBinder.Eval(Container, "DataItem.sl") %>'>
</asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="newsl" runat="server" Width="109px"></asp:TextBox>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="金额">
<ItemTemplate>
<asp:TextBox id="je" runat="server" Width="109px" Text='<%# DataBinder.Eval(Container, "DataItem.je") %>'>
</asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="newje" runat="server" Width="109px"></asp:TextBox>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Delete Contact">
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<ItemTemplate>
<asp:CheckBox Runat="server" ID="chkDelete"></asp:CheckBox>
</ItemTemplate>
<FooterStyle HorizontalAlign="Center"></FooterStyle>
<FooterTemplate>
<asp:LinkButton Runat="server" Text="增加" commandname="Add" ID="Linkbutton1"></asp:LinkButton>
</FooterTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
<script runat="server">


sub page_load(byval sender as object,byval e as eventargs)


If Not Page.IsPostBack Then
dim dbcommand as new oledbdataadapter
dim dbconn as oledbconnection
dim dspagedata as new dataset
dim sql as string
dbconn = new oledbconnection("Provider=MSDAORA.1;Password=snyx;User ID=snyx;data source=snyx.world")
sql = "select pzbh,dj,sl,je from htxx2"
dbcommand = new oledbdataadapter(sql,dbconn)
dbcommand.fill(dspagedata,"Contact")
DataGrid1.datasource=dspagedata.tables("Contact").defaultview
dspagedata.acceptchanges
DataGrid1.databind


End If

end sub

Private Sub myGrid1_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)

dim dbcommand as new oledbdataadapter
dim dbconn as oledbconnection
dim dspagedata as new dataset
dim sql1 as string

dbconn = new oledbconnection("Provider=MSDAORA.1;Password=snyx;User ID=snyx;data source=snyx.world")
sql1 = "select pzbm,pzbh from pz"
dbcommand = new oledbdataadapter(sql1,dbconn)
dbcommand.fill(dspagedata,"snpz")
Dim pzbh As DropDownList = CType(e.Item.FindControl("pzbh"), DropDownList)

pzbh.DataSource = dspagedata.tables("snpz").defaultview
pzbh.DataValueField = "pzbh"
pzbh.DataTextField = "pzbh"
pzbh.DataBind()
End Sub

</script>
</form>
</body>
</HTML>
OutcastXP 2003-08-03
  • 打赏
  • 举报
回复
你把你的程序这一部分发给我,我帮你作好给你
qsmrbyf 2003-08-03
  • 打赏
  • 举报
回复
是的
OutcastXP 2003-08-03
  • 打赏
  • 举报
回复
你是用Oracle数据库?
qsmrbyf 2003-08-03
  • 打赏
  • 举报
回复
我的代码如下,但运行时还是提示未将对象引用设置到对象的实例

Private Sub myGrid1_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)

dim dbcommand as new oledbdataadapter
dim dbconn as oledbconnection
dim dspagedata as new dataset
dim sql1 as string


dbconn = new oledbconnection("Provider=MSDAORA.1;Password=snyx;User ID=snyx;data source=snyx.world")



sql1 = "select pzbm,pzbh from pz"

Dim pzbh As DropDownList = CType(e.Item.FindControl("pzbh"), DropDownList)
pzbh.DataSource = dspagedata.tables("snpz").defaultview
pzbh.DataValueField = "pzbh"
pzbh.DataTextField = "pzbh"
pzbh.DataBind()
End Sub
OutcastXP 2003-08-03
  • 打赏
  • 举报
回复
你把他放在ItemDataBound事件里:

Private Sub myGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles myGrid1.ItemDataBound
Dim pzbh As DropDownList = CType(e.Item.FindControl("pzbh"), DropDownList)
pzbh.DataSource = dspagedata.tables("snpz").defaultview
pzbh.DataValueField = "pzbh"
pzbh.DataTextField = "pzbh"
pzbh.DataBind()
End Sub
qsmrbyf 2003-08-03
  • 打赏
  • 举报
回复
OutcastXP(敲木鱼的老和尚)
非常感谢你,我用你上面的代码试了,还是不行,是不是你这段代码我放的事件不对,我是将它放在了sub page_load(byval sender as object,byval e as eventargs)里面,另外,你有没有用vb做的例子,可以给我发一个吗,我的邮箱是
xys_yf@sohu.com
OutcastXP 2003-08-03
  • 打赏
  • 举报
回复
Dim pzbh As DropDownList = CType(Datagrid1.FindControl("pzbh"), DropDownList)
pzbh.datasource = dspagedata.tables("snpz").defaultview
pzbh.DataValueField = "pzbh"
pzbh.DataTextField = "pzbh"
pzbh.DataBind

你再试一下
qsmrbyf 2003-08-03
  • 打赏
  • 举报
回复
我的datagrid是:
asp:datagrid id="Datagrid1"
数据源没有问题,如果将下拉列表放在网页的其他地方都能将数据绑定进去,但用模板列放在datagrid里面就不行了。
OutcastXP 2003-08-03
  • 打赏
  • 举报
回复
还有你的数据源有问题吗?
OutcastXP 2003-08-03
  • 打赏
  • 举报
回复
那我问你,你的datagrid的名字是啥?
你把你的代码贴出来看看
qsmrbyf 2003-08-03
  • 打赏
  • 举报
回复
OutcastXP(敲木鱼的老和尚),非常感谢你,我现在还没有调试成功,现在,运行时出现这样的错误。


“/snyx”应用程序中的服务器错误。
--------------------------------------------------------------------------------

未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
请指教。
OutcastXP 2003-08-03
  • 打赏
  • 举报
回复
是你的那个地方写错了
我也就跟你写错了
是DataBind

哈哈哈哈哈
加载更多回复(6)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧