为什么我老是更新不了这个 dropdownlist所在列 的值呢?

尔东主机 2012-05-07 10:55:16

<EditItemTemplate>
<asp:DropDownList ID="ddlPianqu" runat="server" AutoPostBack="true" DataSource='<%# ddlbind()%>' DataValueField="id" DataTextField="pianqu"></asp:DropDownList>
<asp:Label ID="lblPianqu" Text='<%# Bind("pianquid") %>' Visible="false" runat="server"></asp:Label>
</EditItemTemplate>


protected void GridView1_ItemUpdating(Object sender, GridViewUpdateEventArgs e)
{
ControlParameter cp_id = new ControlParameter("id", TypeCode.String, GridView1.Rows[GridView1.EditIndex].FindControl("lblId").UniqueID.ToString(), "Text");
ControlParameter cp_salesman = new ControlParameter("salesman", TypeCode.String, GridView1.Rows[GridView1.EditIndex].FindControl("salesmanTextBox").UniqueID.ToString(), "Text");
ControlParameter cp_pianquid = new ControlParameter("pianquid", TypeCode.String, GridView1.Rows[GridView1.EditIndex].FindControl("ddlPianqu").UniqueID.ToString(),"SelectedValue");
SqlDataSource1.UpdateParameters.Add(cp_id);
SqlDataSource1.UpdateParameters.Add(cp_salesman);
SqlDataSource1.UpdateParameters.Add(cp_pianquid);
}

为什么我老是更新不了这个 dropdownlist所在列 的值呢?
...全文
218 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
尔东主机 2012-05-08
  • 打赏
  • 举报
回复
现在我发现Insert没问题是因为有以下代码:

protected void btnAdd_Click(object sender, EventArgs e)
{
TextBox TextBox1 = GridView1.FooterRow.FindControl("salesmanBox") as TextBox;
DropDownList ddl = (DropDownList)GridView1.FooterRow.FindControl("ddlPianqu");
SqlDataSource1.InsertParameters["salesman"].DefaultValue = TextBox1.Text;
SqlDataSource1.InsertParameters["pianquid"].DefaultValue = ddl.SelectedValue;
SqlDataSource1.Insert();
}

那UpdateParameters的代码到底要怎样才能生效并正好抓取到ddlPianqu(DropDownList)修改后的值呢?
急死我了!
尔东主机 2012-05-07
  • 打赏
  • 举报
回复
绑定方法我的写法没问题,可以绑定成功,现在问题是:
比如说 原来 ddlPianqu的值是 “福建”,我现在点编辑,把ddlPianqu的值改为“湖北”,
然后点保存,结果ddlPianqu的值还是“福建”!
尔东主机 2012-05-07
  • 打赏
  • 举报
回复
我那样写没问题的。楼上的写法不行噢! 不过还是谢谢你的回复。

为什么我老是更新不了这个 dropdownlist所在列 的值呢?
EnForGrass 2012-05-07
  • 打赏
  • 举报
回复
绑定方法是这样DataSource='<%= ddlbind()%>'

尔东主机 2012-05-07
  • 打赏
  • 举报
回复

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:connHome %>"
DeleteCommand="DELETE FROM [salesman] WHERE [id] = @id"
InsertCommand="INSERT INTO [salesman] ([salesman], [pianquid]) VALUES (@salesman, @pianquid)"
SelectCommand="(SELECT [id], [salesman], [pianquid] FROM [salesman]) union (select 0 as [id],'开始标记' as [salesman],0 as [pianquid])"
UpdateCommand="UPDATE [salesman] SET [salesman] = @salesman, [pianquid] = @pianquid WHERE [id] = @id">
<DeleteParameters>
<asp:Parameter Name="id" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="salesman" Type="String" />
<asp:Parameter Name="pianquid" Type="Int32" />
</InsertParameters>
</asp:SqlDataSource>

别的列都可以修改,唯独dropdownlist所在列pianquid无法修改成功,修改完还是旧值!奇怪了!
尔东主机 2012-05-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

AutoPostBack="false" 再试试
[/Quote]

谢谢China_yuanli,但是试了不行噢!
尔东主机 2012-05-07
  • 打赏
  • 举报
回复
代码改成这样还是不行:(update有问题,Insert没问题)

protected void GridView1_OnRowCommand(Object sender, GridViewCommandEventArgs e)
{
switch (e.CommandName)
{
case "Update":
ControlParameter cp_id = new ControlParameter("id", TypeCode.Int32, GridView1.Rows[GridView1.EditIndex].FindControl("lblId").UniqueID.ToString(), "Text");
ControlParameter cp_salesman = new ControlParameter("salesman", TypeCode.String, GridView1.Rows[GridView1.EditIndex].FindControl("salesmanTextBox").UniqueID.ToString(), "Text");
ControlParameter cp_pianquid = new ControlParameter("pianquid", TypeCode.Int32, GridView1.Rows[GridView1.EditIndex].FindControl("ddlPianqu").UniqueID.ToString(), "SelectedValue");
SqlDataSource1.UpdateParameters.Clear(); // 清理参数
SqlDataSource1.UpdateParameters.Add(cp_id);
SqlDataSource1.UpdateParameters.Add(cp_salesman);
SqlDataSource1.UpdateParameters.Add(cp_pianquid);
break;
case "Insert":
ControlParameter cp_salesman1 = new ControlParameter("salesman", TypeCode.String, GridView1.FooterRow.FindControl("salesmanTextBox").UniqueID.ToString(), "Text");
ControlParameter cp_pianquid1 = new ControlParameter("pianquid", TypeCode.Int32, GridView1.FooterRow.FindControl("ddlPianqu").UniqueID.ToString(), "SelectedValue");
SqlDataSource1.InsertParameters.Add(cp_salesman1);
SqlDataSource1.InsertParameters.Add(cp_pianquid1);
break;
default:
break;
}
}
China_yuanli 2012-05-07
  • 打赏
  • 举报
回复
AutoPostBack="false" 再试试
尔东主机 2012-05-07
  • 打赏
  • 举报
回复
我用的是SqlDataSource控件,
代码跟踪到GridView1_OnRowUpdating里都没问题,
但是也不知道GridView1_OnRowUpdating执行完后,程序有没接着执行UpdateCommand,
其它字段倒是有更改成功,说明UpdateCommand有被执行,但是我无法确定UpdateCommand是不是在GridView1_OnRowUpdating之后执行的。,如果是ddlPianqu怎么还是没有变化呢?

62,267

社区成员

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

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

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

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