请各位帮小弟看查一下代码,谢谢

yi63 2005-03-30 11:26:41
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Page Language="C#" Debug="true" %>

<html>
<script language="C#" runat="server">
SqlConnection myConnection;

void Page_Load(Object sender, EventArgs e)
{
//判断是否隐藏PagerStyle-Mode
if (chk1.Checked)
{
MyDataGrid.PagerStyle.Visible=true;
}
else
{
MyDataGrid.PagerStyle.Visible=false;
}
BindGrid();
}

void BindGrid()
{

myConnection = new SqlConnection("server=(local);database=cnlydb;uid=sa;pwd=");
SqlDataAdapter myCommand = new SqlDataAdapter("select * from base", myConnection);

DataSet ds = new DataSet();
myCommand.Fill(ds, "base");

MyDataGrid.DataSource=ds.Tables["base"].DefaultView;
MyDataGrid.DataBind();



ShowStats();
}

void PagerButtonClick(Object sender, EventArgs e)
{
//获得LinkButton的参数值
String arg = ((LinkButton)sender).CommandArgument;

switch(arg)
{
case ("next"):
if (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1))
MyDataGrid.CurrentPageIndex ++;
break;
case ("prev"):
if (MyDataGrid.CurrentPageIndex > 0)
MyDataGrid.CurrentPageIndex --;
break;
case ("last"):
MyDataGrid.CurrentPageIndex = (MyDataGrid.PageCount - 1);
break;
default:
//本页值
MyDataGrid.CurrentPageIndex = Int32.Parse(arg);
break;
}
BindGrid();
}


void MyDataGrid_Page(Object sender, DataGridPageChangedEventArgs e)
{
MyDataGrid.CurrentPageIndex = e.NewPageIndex;
BindGrid();
//处理按下数字的方法
}



void ShowStats()
{
//显示页面信息
lblCurrentIndex.Text = "当前页数为: " + ((int)MyDataGrid.CurrentPageIndex+1);
lblPageCount.Text = "总页数是: " + MyDataGrid.PageCount;
}
public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e)
{
MyDataGrid.EditItemIndex = (int)e.Item.ItemIndex;
BindGrid();
}

public void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e)
{
MyDataGrid.EditItemIndex = -1;
BindGrid();
}
public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e)
{
String updateCmd = "UPDATE base SET id = @id, kind = @kind, i5 = @i5, i6 = @i6, time = @time where id = @id";

SqlCommand myCommand = new SqlCommand(updateCmd, myConnection);
myCommand.Parameters.Add(new SqlParameter("@id", SqlDbType.Int, 4));
myCommand.Parameters.Add(new SqlParameter("@kind", SqlDbType.NVarChar, 50));
myCommand.Parameters.Add(new SqlParameter("@i5", SqlDbType.NVarChar, 50));
myCommand.Parameters.Add(new SqlParameter("@i6", SqlDbType.NText, 16));
myCommand.Parameters.Add(new SqlParameter("@time", SqlDbType.SmallDateTime, 4));

myCommand.Parameters["@id"].Value = MyDataGrid.DataKeys[(int)e.Item.ItemIndex];

Message.InnerHtml = "";


if ( Message.InnerHtml != "" )
{
Message.Style["color"] = "red";
return;
}

myCommand.Connection.Open();

try
{
myCommand.ExecuteNonQuery();
Message.InnerHtml = "<b>Record Updated</b><br>" + updateCmd;
MyDataGrid.EditItemIndex = -1;
}
catch (SqlException exc)
{
if (exc.Number == 2627)
Message.InnerHtml = "ERROR: A record already exists with the same primary key";
else
Message.InnerHtml = "ERROR: Could not update record, please ensure the fields are correctly filled out" + updateCmd;
Message.Style["color"] = "red";
}

myCommand.Connection.Close();

BindGrid();
}
</script>

<body>
<form runat=server>
<table width="600" border="0">
<tr>
<td><asp:LinkButton ID="btnFirst" runat="server"
Text="首页"
CommandArgument="0"
ForeColor="navy"
Font-Name="verdana" Font-Size="8pt"
OnClick="PagerButtonClick"
/>
 
<asp:LinkButton ID="btnPrev" runat="server"
Text="前页"
CommandArgument="prev"
ForeColor="navy"
Font-Name="verdana" Font-Size="8pt"
OnClick="PagerButtonClick"
/>
 
<asp:LinkButton ID="btnNext" runat="server"
Text="后页"
CommandArgument="next"
ForeColor="navy"
Font-Name="verdana" Font-Size="8pt"
OnClick="PagerButtonClick"
/>
 
<asp:LinkButton ID="btnLast" runat="server"
Text="末页"
CommandArgument="last"
ForeColor="navy"
Font-Name="verdana" Font-Size="8pt"
OnClick="PagerButtonClick"
/></td>
<td> </td>
<td><asp:CheckBox ID="chk1" runat="server"
Text="显示内置的页数"
Font-Name="Verdana"
Font-Size="8pt"
AutoPostBack="true"
/></td>
<td><font face="Verdana">
<asp:Label ID="lblCurrentIndex" runat="server" />
</font></td>
<td><font face="Verdana">
<asp:Label ID="lblPageCount" runat="server" />
</font></td>
</tr>
<tr>
<td colspan="5">
<span id="Message" EnableViewState="false" style="font: arial 11pt;" runat="server"/>
</td></tr>
<tr>
<td colspan="5">
<ASP:DataGrid
id="MyDataGrid"
runat="server"
AllowPaging="True"
PageSize="5"
PagerStyle-Mode="NumericPages"
PagerStyle-HorizontalAlign="Right"
OnPageIndexChanged="MyDataGrid_Page"
BorderColor="black"
BorderWidth="1"
GridLines="Both"
CellPadding="3"
CellSpacing="0"
DataKeyField="id"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
AlternatingItemStyle-BackColor="#eeeeee"
AutoGenerateColumns="false"
OnEditCommand="MyDataGrid_Edit"
OnCancelCommand="MyDataGrid_Cancel"
OnUpdateCommand="MyDataGrid_Update"
>
<Columns>
<asp:EditCommandColumn EditText="编辑" CancelText="取消" UpdateText="更新" />
<asp:BoundColumn HeaderText="id" SortExpression="id" ReadOnly="True" DataField="id" ItemStyle-Wrap="false"/>
<asp:BoundColumn HeaderText="kind" SortExpression="kind" DataField="kind" ItemStyle-Wrap="false"/>
<asp:BoundColumn HeaderText="i5" SortExpression="i5" DataField="i5" ItemStyle-Wrap="false"/>
<asp:BoundColumn HeaderText="i6" SortExpression="i6" DataField="i6" ItemStyle-Wrap="false" ItemStyle-Width="200"/>
<asp:BoundColumn HeaderText="time" SortExpression="time" DataField="time" ItemStyle-Wrap="false"/>
</Columns>

</ASP:DataGrid></td>
</tr>
</table>
</form>

</body>

</html>
...全文
95 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yi63 2005-04-01
  • 打赏
  • 举报
回复
改后依然!!
why?
yi63 2005-04-01
  • 打赏
  • 举报
回复
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.UI" %>
<%@ Import Namespace="System.Web.UI.WebControls" %>
<%@ Page Language="c#" Debug="true"%>
<HTML>
<script language="C#" runat="server">
SqlConnection myConnection;

void Page_Load(Object sender, EventArgs e)
{
//判断是否隐藏PagerStyle-Mode
if (chk1.Checked)
{
MyDataGrid.PagerStyle.Visible=true;
}
else
{
MyDataGrid.PagerStyle.Visible=false;
}


BindGrid();
}

void BindGrid()
{

myConnection = new SqlConnection("server=(local);database=master;uid=sa;pwd=");
SqlDataAdapter myCommand = new SqlDataAdapter("select * from base", myConnection);

DataSet ds = new DataSet();
myCommand.Fill(ds, "base");

MyDataGrid.DataSource=ds.Tables["base"].DefaultView;
MyDataGrid.DataBind();

ShowStats();
}

void PagerButtonClick(Object sender, EventArgs e)
{
//获得LinkButton的参数值
String arg = ((LinkButton)sender).CommandArgument;

switch(arg)
{
case ("next"):
if (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1))
MyDataGrid.CurrentPageIndex ++;
break;
case ("prev"):
if (MyDataGrid.CurrentPageIndex > 0)
MyDataGrid.CurrentPageIndex --;
break;
case ("last"):
MyDataGrid.CurrentPageIndex = (MyDataGrid.PageCount - 1);
break;
default:
//本页值
MyDataGrid.CurrentPageIndex = Int32.Parse(arg);
break;
}
BindGrid();
}

//处理按下数字的方法
void MyDataGrid_Page(Object sender, DataGridPageChangedEventArgs e)
{
MyDataGrid.CurrentPageIndex = e.NewPageIndex;
BindGrid();
}

//显示页面信息
void ShowStats()
{
lblCurrentIndex.Text = "当前页数为: " + ((int)MyDataGrid.CurrentPageIndex+1);
lblPageCount.Text = "总页数是: " + MyDataGrid.PageCount;
}
public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e)
{
MyDataGrid.EditItemIndex = (int)e.Item.ItemIndex;
BindGrid();
}

public void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e)
{
MyDataGrid.EditItemIndex = -1;
BindGrid();
}
public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e)
{
String updateCmd = "UPDATE base SET kind = @kind, i5 = @i5, i6 = @i6, time = @time where id = @id";
myConnection = new SqlConnection("server=(local);database=master;uid=sa;pwd=");
SqlCommand myCommand = new SqlCommand(updateCmd, myConnection);
myCommand.Parameters.Add(new SqlParameter("@id", SqlDbType.Int, 4));
myCommand.Parameters.Add(new SqlParameter("@kind", SqlDbType.NVarChar, 50));
myCommand.Parameters.Add(new SqlParameter("@i5", SqlDbType.NVarChar, 50));
myCommand.Parameters.Add(new SqlParameter("@i6", SqlDbType.NText, 16));
myCommand.Parameters.Add(new SqlParameter("@time", SqlDbType.SmallDateTime, 4));

Message.InnerHtml = "";

if ( Message.InnerHtml != "" )
{
Message.Style["color"] = "red";
return;
}
myCommand.Connection.Open();

try
{
myCommand.ExecuteNonQuery();
Message.InnerHtml = "<b>Record Updated</b><br>" + updateCmd;
MyDataGrid.EditItemIndex = -1;
}
catch (SqlException exc)
{
Message.InnerHtml = e.ToString();
Message.Style["color"] = "red";
}

myCommand.Connection.Close();

BindGrid();
}
</script>
<body>
<form runat="server">
<table width="600" border="0">
<tr>
<td><asp:LinkButton ID="btnFirst" runat="server" Text="首页" CommandArgument="0" ForeColor="navy" Font-Name="verdana"
Font-Size="8pt" OnClick="PagerButtonClick" />
 
<asp:LinkButton ID="btnPrev" runat="server" Text="前页" CommandArgument="prev" ForeColor="navy" Font-Name="verdana"
Font-Size="8pt" OnClick="PagerButtonClick" />
 
<asp:LinkButton ID="btnNext" runat="server" Text="后页" CommandArgument="next" ForeColor="navy" Font-Name="verdana"
Font-Size="8pt" OnClick="PagerButtonClick" />
 
<asp:LinkButton ID="btnLast" runat="server" Text="末页" CommandArgument="last" ForeColor="navy" Font-Name="verdana"
Font-Size="8pt" OnClick="PagerButtonClick" /></td>
<td> </td>
<td><asp:CheckBox ID="chk1" runat="server" Text="显示内置的页数" Font-Name="Verdana" Font-Size="8pt" AutoPostBack="true" /></td>
<td><font face="Verdana">
<asp:Label ID="lblCurrentIndex" runat="server" />
</font>
</td>
<td><font face="Verdana">
<asp:Label ID="lblPageCount" runat="server" />
</font>
</td>
</tr>
<tr>
<td colspan="5">
<span id="Message" EnableViewState="false" runat="server" />
</td>
</tr>
<tr>
<td colspan="5">
<ASP:DataGrid id="MyDataGrid" runat="server" AllowPaging="True" PageSize="5" PagerStyle-Mode="NumericPages"
PagerStyle-HorizontalAlign="Right" OnPageIndexChanged="MyDataGrid_Page" BorderColor="black"
BorderWidth="1" GridLines="Both" CellPadding="3" CellSpacing="0" DataKeyField="id" Font-Name="Verdana"
Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" AlternatingItemStyle-BackColor="#eeeeee" AutoGenerateColumns="false"
OnEditCommand="MyDataGrid_Edit" OnCancelCommand="MyDataGrid_Cancel" OnUpdateCommand="MyDataGrid_Update">
<Columns>
<asp:EditCommandColumn EditText="编辑" CancelText="取消" UpdateText="更新" />
<asp:BoundColumn HeaderText="id" SortExpression="id" ReadOnly="True" DataField="id" ItemStyle-Wrap="false" />
<asp:BoundColumn HeaderText="kind" SortExpression="kind" DataField="kind" ItemStyle-Wrap="false" />
<asp:BoundColumn HeaderText="i5" SortExpression="i5" DataField="i5" ItemStyle-Wrap="false" />
<asp:BoundColumn HeaderText="i6" SortExpression="i6" DataField="i6" ItemStyle-Wrap="false" ItemStyle-Width="200" />
<asp:BoundColumn HeaderText="time" SortExpression="time" DataField="time" ItemStyle-Wrap="false" />
</Columns>
</ASP:DataGrid></td>
</tr>
</table>
</form>
</body>
</HTML>
yi63 2005-03-31
  • 打赏
  • 举报
回复
Message.InnerHtml = "ERROR: Could not update record, please ensure the fields are correctly filled out" + updateCmd;
是这里拖出异常
tajlolo 2005-03-31
  • 打赏
  • 举报
回复
初看了一下,插入了主键重复的纪录.如果你的id是自增长或者是Orcal中的序列的,就不用插入.如果不是自增长的,你就要手动维护主键的唯一性.
coldpanth 2005-03-30
  • 打赏
  • 举报
回复
编辑器在哪行报的错?
yi63 2005-03-30
  • 打赏
  • 举报
回复
症状:无法更新,其它操作均好用.更新错误提示是else后部分.
catch (SqlException exc)
{
if (exc.Number == 2627)
Message.InnerHtml = "ERROR: A record already exists with the same primary key";
else
Message.InnerHtml = "ERROR: Could not update record, please ensure the fields are correctly filled out" + updateCmd;
Message.Style["color"] = "red";
}

62,025

社区成员

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

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

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

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