DetailView更新时其中的DropDpwnList中的值传不过来啊,为什么!!!

自由小菜园 2008-10-21 08:29:31
<asp:TemplateField HeaderText="部门" SortExpression="userDepart.departName">
<EditItemTemplate>
 <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="ObjectDataSource1" DataTextField="departName" DataValueField="departId">
</asp:DropDownList><asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetAllmyDepart"
TypeName="ManagerBLL.myDepartManager"></asp:ObjectDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("userDepart.departName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

后面的 public static void ModifyUser(string userId, string userName, int userSex, int userMoney, int userPrize, string departId)中departId总是为NUll不知道什么原因啊!!
...全文
179 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
qinhl99 2008-10-21
  • 打赏
  • 举报
回复
学习sp1234
  • 打赏
  • 举报
回复
假设声明为:

 <UpdateParameters>
<asp:ControlParameter ControlID="Model" Name="model" PropertyName="Text" Type="String" />
...............
<asp:Parameter Name="departId" Type="String" />


我们可以自定义地为它赋值,代码类似于:
protected void MyDataView_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
{
DropdownList dr= ((DetailsView)sender).FindControl("DropDownList1");
e.NewValues["departId"] = dr.SelectedValue;
}


可以自定义很多转换。例如我经常在TextBox中默认地有并且允许用户输入货币符号,这就需要在Updating的时候先转换为decimal才能正常更新。
自由小菜园 2008-10-21
  • 打赏
  • 举报
回复
我写了的
zhangjun 2008-10-21
  • 打赏
  • 举报
回复
page_load的没有写!Page.IsPostBack
自由小菜园 2008-10-21
  • 打赏
  • 举报
回复
我这里有主外键,用实体类
如果按楼上说是加SelectedValue='<%#Eval("userDepart.departId")>'吗,这个没用啦!
warrior 2008-10-21
  • 打赏
  • 举报
回复
还应该设定将选中的值绑定到DetailView的数据源的对应字段吧?
自由小菜园 2008-10-21
  • 打赏
  • 举报
回复
各位帮帮忙啊!!
自由小菜园 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 tonyze 的回复:]
我倒,你绑定的数据源不知道是什么怎么可以···
[/Quote]
我指的是不知道你问的是我是其中的DropDownList的数据源,还是DetailView的数据源
tonyze 2008-10-21
  • 打赏
  • 举报
回复
我倒,你绑定的数据源不知道是什么怎么可以···
自由小菜园 2008-10-21
  • 打赏
  • 举报
回复
我说明一下:
DetailView的数据源控件中用GetmyUserById方法取得,更新用的是public static void ModifyUser(string userId, string userName, int userSex, int userMoney, int userPrize, string departId)方法,该方法也是在数据源控件中指定的,然后在编辑状态下原来显示部门的Label换成了DropDownList
其中DropDownList的数据源控件用了一个GetAllmyDepart方法,反正编辑下值也是有的点击更新时ModifyUser中的departId老为NULL
自由小菜园 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 magicbacon 的回复:]
ModifyUser中的departId参数是怎么取得的?
[/Quote]
我不知道啦! <EditItemTemplate>
  <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="ObjectDataSource1" DataTextField="departName" DataValueField="departId">
</asp:DropDownList> <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetAllmyDepart"
TypeName="ManagerBLL.myDepartManager"> </asp:ObjectDataSource>
</EditItemTemplate>
这里不是有一个departId吗?
奔跑的蜗牛007 2008-10-21
  • 打赏
  • 举报
回复
1。数据绑定了没有?
2。如果有数据,你取数据的方法是什么?
调试跟踪一下吧
magicbacon 2008-10-21
  • 打赏
  • 举报
回复
ModifyUser中的departId参数是怎么取得的?
自由小菜园 2008-10-21
  • 打赏
  • 举报
回复
绑定业务层的一个方法 啊
自由小菜园 2008-10-21
  • 打赏
  • 举报
回复
绑定的是业务层的一个方法啊
tonyze 2008-10-21
  • 打赏
  • 举报
回复
应该是数据绑定的原因,你数据源绑的是什么
yeah920 2008-10-21
  • 打赏
  • 举报
回复
帮你顶,等高手来解答。
自由小菜园 2008-10-21
  • 打赏
  • 举报
回复
求救啊!!
自由小菜园 2008-10-21
  • 打赏
  • 举报
回复
第一次错误:在数据层中出现了说没有提供参数@departId,奇怪明明写了啊??算了跟踪调试一下
第二次错误:发现更新方法ModifyUser中的最后一个参数departId也就是需要DropDownList传值过来的显示为NULL,奇怪了怎么没有把值传过来???
第三次错误:网上找啊找试着在DropDownList后加了SelectValue='<%#Bind("userDepart.departId")>'一看格式不对,然后改为Eval这回没有格式错误了,可还是返回NULL
第四次错误:在ItemUpdating中写了这样:DropDownList ddl=this.DetailView1.FindControl("DropDownList1") as DropDownList;objectDataSource1.UpdateParameters.Add("departId",ddl.SelectValue);结果又错误说找不到方法一看错误的那个方法中参数加了一个departId1参数,晕倒!
第五次:又把<UpdateParameters></UpdateParameters>中的<asp:Parameter Name="departId" Type="String" />删掉,终于可以了
后来看到这里原来把objectDataSource1.UpdateParameters.Add("departId",ddl.SelectValue);改成e.NewValues["departId"] = dr.SelectedValue;也可以 还不用删<asp:Parameter Name="departId" Type="String" />唉!!!!花了将近一天的时间,受不了了!!!


自由小菜园 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 sp1234 的回复:]
假设声明为:


HTML code <UpdateParameters>
<asp:ControlParameter ControlID="Model" Name="model" PropertyName="Text" Type="String" />
...............
<asp:Parameter Name="departId" Type="String" />



我们可以自定义地为它赋值,代码类似于:
C# codeprotected void MyDataView_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
{
DropdownList dr= ((Deta…
[/Quote]

这里面的我都有点搞不清楚:
像<asp:ControlParameter ControlID="Model" Name="model" PropertyName="Text" Type="String" />
这句是什么意思,这是自己写上去的吗?还有里面的那些<asp:Parameter 项它是按照什么生成的啊是按照数据源控件中选择的方法生成的吗?能不能删掉的啊,有的说可以有的又好像不可以,还有里面的e.NewValues["departId"] = dr.SelectedValue;这句又是什么意思啊??


62,266

社区成员

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

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

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

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