修改SqlDataSource的selectcommand导致更新失灵,求解,

xumai3 2013-01-11 05:33:00
打开网页如下,DropDownList可用来选择a,b,c,d,e之类选项,动态修改GridView

选择一个DropDownList的选项后GridView自动更新成如下,然后点击前端“编辑”

将第二列 的值加上几个9,点击前端更新

GridView没有正确的更新数据库中值。。。求解


代码如下

前台
<%@ Page Title="主页" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="test._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<h2>
欢迎使用 ASP.NET!
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
</h2>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
DataSourceID="SqlDataSource2" DataTextField="1" DataValueField="1"
onselectedindexchanged="DropDownList1_SelectedIndexChanged">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:test1ConnectionString %>"
SelectCommand="SELECT * FROM [Table_2]"></asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" AllowSorting="True"
AutoGenerateColumns="False" CellPadding="4" DataKeyNames="4"
DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="1" HeaderText="1" SortExpression="1" />
<asp:BoundField DataField="2" HeaderText="2" SortExpression="2" />
<asp:BoundField DataField="3" HeaderText="3" SortExpression="3" />
<asp:BoundField DataField="4" HeaderText="4" ReadOnly="True"
SortExpression="4" />
</Columns>
<EditRowStyle BackColor="#999999" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConflictDetection="CompareAllValues"
ConnectionString="<%$ ConnectionStrings:test1ConnectionString %>"
DeleteCommand="DELETE FROM [Table_2] WHERE [4] = @original_column1 AND (([1] = @original_column2) OR ([1] IS NULL AND @original_column2 IS NULL)) AND (([2] = @original_column3) OR ([2] IS NULL AND @original_column3 IS NULL)) AND (([3] = @original_column4) OR ([3] IS NULL AND @original_column4 IS NULL))"
InsertCommand="INSERT INTO [Table_2] ([1], [2], [3], [4]) VALUES (@column1, @column2, @column3, @column4)"
OldValuesParameterFormatString="original_{0}" onload="SqlDataSource1_Load"
SelectCommand="SELECT * FROM [Table_2]"
UpdateCommand="UPDATE [Table_2] SET [1] = @column1, [2] = @column2, [3] = @column3 WHERE [4] = @original_column1 AND (([1] = @original_column2) OR ([1] IS NULL AND @original_column2 IS NULL)) AND (([2] = @original_column3) OR ([2] IS NULL AND @original_column3 IS NULL)) AND (([3] = @original_column4) OR ([3] IS NULL AND @original_column4 IS NULL))">
<DeleteParameters>
<asp:Parameter Name="original_column1" Type="Int32" />
<asp:Parameter Name="original_column2" Type="String" />
<asp:Parameter Name="original_column3" Type="String" />
<asp:Parameter Name="original_column4" Type="String" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="column1" Type="String" />
<asp:Parameter Name="column2" Type="String" />
<asp:Parameter Name="column3" Type="String" />
<asp:Parameter Name="column4" Type="Int32" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="column1" Type="String" />
<asp:Parameter Name="column2" Type="String" />
<asp:Parameter Name="column3" Type="String" />
<asp:Parameter Name="original_column1" Type="Int32" />
<asp:Parameter Name="original_column2" Type="String" />
<asp:Parameter Name="original_column3" Type="String" />
<asp:Parameter Name="original_column4" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
</ContentTemplate>
</asp:UpdatePanel>
<p>
若要了解关于 ASP.NET 的详细信息,请访问 <a href="http://www.asp.net/cn" title="ASP.NET 网站">www.asp.net/cn</a>。
</p>
<p>
您还可以找到 <a href="http://go.microsoft.com/fwlink/?LinkID=152368"
title="MSDN ASP.NET 文档">MSDN 上有关 ASP.NET 的文档</a>。
</p>
</asp:Content>

后台
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace test
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
SqlDataSource1.SelectCommand = "SELECT * FROM [Table_2] where [1]='" + DropDownList1.SelectedItem.ToString() + "'";
Session["SelectCommand"] = SqlDataSource1.SelectCommand.ToString();
}

protected void SqlDataSource1_Load(object sender, EventArgs e)
{
if (Session["SelectCommand"] != null)
{
SqlDataSource1.SelectCommand = Session["SelectCommand"].ToString();
}
}
}
}
...全文
127 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ice20132014 2013-01-12
  • 打赏
  • 举报
回复
我也想知道这个问题怎么解决
xumai3 2013-01-11
  • 打赏
  • 举报
回复
高手们指点下。。。这个问题太怪异了
ice20132014 2013-01-11
  • 打赏
  • 举报
回复
引用 3 楼 Mockqi 的回复:
用session村SQL语句 没见过 表示不懂
session是用来存变量的嘛,免得postback后那SqlSelectCommand变成原始量了
  • 打赏
  • 举报
回复
用session村SQL语句 没见过 表示不懂
xumai3 2013-01-11
  • 打赏
  • 举报
回复
试了,这个不管用
引用 1 楼 Return_false 的回复:
放在page_load里看看 C# code?12345protected void Page_Load(object sender, EventArgs e){ if (!(Session["SelectCommand"] == null)) SqlDataSource1.SelectCommand = Session["SelectCommand"].ToStrin……
  • 打赏
  • 举报
回复
放在page_load里看看
protected void Page_Load(object sender, EventArgs e)
{
 if (!(Session["SelectCommand"] == null))
 SqlDataSource1.SelectCommand = Session["SelectCommand"].ToString();
}

62,041

社区成员

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

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

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

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