我用datagrid用adapter.update(dataset)修改数据库的时候页面的数据修改了而没有将修改后的数据写入数据库,不知道是为什么,特着急,请高人指点,关键部分代码如下: <asp:DataGrid AutoGenerateColumns="false" id="All_Admin" runat="server" Width="100%" AlternatingItemStyle-CssClass="TableRow1"
AllowSorting="True" AllowPaging="true" PageSize="4" OnPageIndexChanged="OnPageIndexChanged"
OnCancelCommand="OnCancelCommand" OnEditCommand="OnEditCommand" OnUpdateCommand="OnUpdateCommand" OnItemCommand="OnItemCommand" >
<FooterStyle ForeColor="Black" BackColor="#CCCCCC"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#008A8C"></SelectedItemStyle>
<AlternatingItemStyle BackColor="Gainsboro"></AlternatingItemStyle>
<ItemStyle ForeColor="Black" BackColor="#EEEEEE" HorizontalAlign="Center"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#000084" HorizontalAlign="Center"></HeaderStyle>
<PagerStyle Visible="true" Height="30" Font-Bold="true" Font-Size="26" HorizontalAlign="Center" Mode="NumericPages"></PagerStyle>
<Columns>
<asp:TemplateColumn >
<ItemTemplate><input type="checkbox" runat="server" id="chkSelect" onclick="AddRemoveValues(this)" value='<%#DataBinder.Eval(Container.DataItem,"id")%>'/>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="account" ReadOnly="True" HeaderText="帐号" >
<HeaderStyle Wrap="False"></HeaderStyle>
<ItemStyle Wrap="False"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="name" ReadOnly="false" HeaderText="名字" >
<HeaderStyle Wrap="False"></HeaderStyle>
<ItemStyle Wrap="False"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="state" ReadOnly="True" HeaderText="状态" >
<HeaderStyle Wrap="False"></HeaderStyle>
<ItemStyle Wrap="False"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="admin_right" ReadOnly="True" HeaderText="权限" >
<HeaderStyle Wrap="False"></HeaderStyle>
<ItemStyle Wrap="False"></ItemStyle>
</asp:BoundColumn>
<asp:EditCommandColumn HeaderText="编辑" EditText="改名" UpdateText="确定" CancelText="取消" ButtonType="PushButton" >
</asp:EditCommandColumn>
</Columns>
</asp:DataGrid> DBManage DB = new DBManage();
Admin admin = new Admin();
public int recordCount;
public int pageCount; SqlConnection conn;
SqlCommand command;
SqlDataAdapter adapter;
SqlCommandBuilder builder;
DataSet dataset;
protected void Page_Load(object sender, EventArgs e)
{
adapter = DB.myDataAdapter(City56.SelectSql.All_Admin);
dataset = new DataSet();
try
{
DB.Open();
adapter.Fill(dataset);
recordCount = dataset.Tables[0].Rows.Count;
//获取当前的页数
pageCount = (int)((recordCount - 1 + PageSize) / PageSize);
//ShowMessage.ShowAlert(pageCount.ToString());
//避免纪录从有到无时,并且已经进行过反页的情况下CurrentPageIndex > PageCount出错
if (recordCount == 0)
{
this.All_Admin.CurrentPageIndex = 0;
}
else if (this.All_Admin.CurrentPageIndex >= PageCount)
{
this.All_Admin.CurrentPageIndex = pageCount - 1;
}
foreach (DataRow dr in dataset.Tables[0].Rows)
{
switch (dr[5].ToString())
{
case "1": dr[5] = "正常"; break;
case "2": dr[5] = "锁定"; break;
default: dr[5] = "未知"; break;
}
switch (dr[4].ToString())
{
case "0": dr[4] = "超级管理员"; break;
default: dr[4] = "普通管理员"; break;
}
}
}
catch
{
Response.Write(e.ToString());
return;
}
finally
{
DB.Close();
}
if(!Page.IsPostBack)
{ DataBind(); }
}
public void DataBind()
{
All_Admin.DataSource = dataset;
All_Admin.DataBind();
NavigationStateChange();
} public void OnPageIndexChanged(object sendef, DataGridPageChangedEventArgs e)
{
All_Admin.CurrentPageIndex = e.NewPageIndex;
DataBind();
}
public void OnItemCommand(object sendef, DataGridCommandEventArgs e)
{ }
public void OnUpdateCommand(object sendef, DataGridCommandEventArgs e)
{
DataRow dr = dataset.Tables[0].Rows[e.Item.ItemIndex];
//ShowMessage.ShowAlert(e.Item.ItemIndex.ToString());
dr["name"] = ((TextBox)e.Item.Cells[2].Controls[0]).Text;
//dr["name"] = ((TextBox)e.Item.FindControl("name")).Text.Trim();
ShowMessage.ShowAlert(dr[3].ToString());
//adapter = DB.myDataAdapter(City56.SelectSql.All_Admin);
dataset.Tables[0].AcceptChanges();
try
{
DB.Open();
//ShowMessage.ShowAlert(dr[2].ToString());
adapter.Update(dataset.Tables[0]);
//if(adapter.ContinueUpdateOnError)
//dr = dataset.Tables[0].Rows[e.Item.ItemIndex];
//ShowMessage.ShowAlert(dr[3].ToString());
//else ShowMessage.ShowAlert("Right") ;
}
catch(SqlException se) {
ShowMessage.ShowAlert(se.ToString());
}
finally{
DB.Close();
}
dataset.Tables[0].AcceptChanges();
All_Admin.EditItemIndex = -1;
DataBind();
}
AllowSorting="True" AllowPaging="true" PageSize="4" OnPageIndexChanged="OnPageIndexChanged"
OnCancelCommand="OnCancelCommand" OnEditCommand="OnEditCommand" OnUpdateCommand="OnUpdateCommand" OnItemCommand="OnItemCommand" >
<FooterStyle ForeColor="Black" BackColor="#CCCCCC"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#008A8C"></SelectedItemStyle>
<AlternatingItemStyle BackColor="Gainsboro"></AlternatingItemStyle>
<ItemStyle ForeColor="Black" BackColor="#EEEEEE" HorizontalAlign="Center"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#000084" HorizontalAlign="Center"></HeaderStyle>
<PagerStyle Visible="true" Height="30" Font-Bold="true" Font-Size="26" HorizontalAlign="Center" Mode="NumericPages"></PagerStyle>
<Columns>
<asp:TemplateColumn >
<ItemTemplate><input type="checkbox" runat="server" id="chkSelect" onclick="AddRemoveValues(this)" value='<%#DataBinder.Eval(Container.DataItem,"id")%>'/>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="account" ReadOnly="True" HeaderText="帐号" >
<HeaderStyle Wrap="False"></HeaderStyle>
<ItemStyle Wrap="False"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="name" ReadOnly="false" HeaderText="名字" >
<HeaderStyle Wrap="False"></HeaderStyle>
<ItemStyle Wrap="False"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="state" ReadOnly="True" HeaderText="状态" >
<HeaderStyle Wrap="False"></HeaderStyle>
<ItemStyle Wrap="False"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="admin_right" ReadOnly="True" HeaderText="权限" >
<HeaderStyle Wrap="False"></HeaderStyle>
<ItemStyle Wrap="False"></ItemStyle>
</asp:BoundColumn>
<asp:EditCommandColumn HeaderText="编辑" EditText="改名" UpdateText="确定" CancelText="取消" ButtonType="PushButton" >
</asp:EditCommandColumn>
</Columns>
</asp:DataGrid> DBManage DB = new DBManage();
Admin admin = new Admin();
public int recordCount;
public int pageCount; SqlConnection conn;
SqlCommand command;
SqlDataAdapter adapter;
SqlCommandBuilder builder;
DataSet dataset;
protected void Page_Load(object sender, EventArgs e)
{
adapter = DB.myDataAdapter(City56.SelectSql.All_Admin);
dataset = new DataSet();
try
{
DB.Open();
adapter.Fill(dataset);
recordCount = dataset.Tables[0].Rows.Count;
//获取当前的页数
pageCount = (int)((recordCount - 1 + PageSize) / PageSize);
//ShowMessage.ShowAlert(pageCount.ToString());
//避免纪录从有到无时,并且已经进行过反页的情况下CurrentPageIndex > PageCount出错
if (recordCount == 0)
{
this.All_Admin.CurrentPageIndex = 0;
}
else if (this.All_Admin.CurrentPageIndex >= PageCount)
{
this.All_Admin.CurrentPageIndex = pageCount - 1;
}
foreach (DataRow dr in dataset.Tables[0].Rows)
{
switch (dr[5].ToString())
{
case "1": dr[5] = "正常"; break;
case "2": dr[5] = "锁定"; break;
default: dr[5] = "未知"; break;
}
switch (dr[4].ToString())
{
case "0": dr[4] = "超级管理员"; break;
default: dr[4] = "普通管理员"; break;
}
}
}
catch
{
Response.Write(e.ToString());
return;
}
finally
{
DB.Close();
}
if(!Page.IsPostBack)
{ DataBind(); }
}
public void DataBind()
{
All_Admin.DataSource = dataset;
All_Admin.DataBind();
NavigationStateChange();
} public void OnPageIndexChanged(object sendef, DataGridPageChangedEventArgs e)
{
All_Admin.CurrentPageIndex = e.NewPageIndex;
DataBind();
}
public void OnItemCommand(object sendef, DataGridCommandEventArgs e)
{ }
public void OnUpdateCommand(object sendef, DataGridCommandEventArgs e)
{
DataRow dr = dataset.Tables[0].Rows[e.Item.ItemIndex];
//ShowMessage.ShowAlert(e.Item.ItemIndex.ToString());
dr["name"] = ((TextBox)e.Item.Cells[2].Controls[0]).Text;
//dr["name"] = ((TextBox)e.Item.FindControl("name")).Text.Trim();
ShowMessage.ShowAlert(dr[3].ToString());
//adapter = DB.myDataAdapter(City56.SelectSql.All_Admin);
dataset.Tables[0].AcceptChanges();
try
{
DB.Open();
//ShowMessage.ShowAlert(dr[2].ToString());
adapter.Update(dataset.Tables[0]);
//if(adapter.ContinueUpdateOnError)
//dr = dataset.Tables[0].Rows[e.Item.ItemIndex];
//ShowMessage.ShowAlert(dr[3].ToString());
//else ShowMessage.ShowAlert("Right") ;
}
catch(SqlException se) {
ShowMessage.ShowAlert(se.ToString());
}
finally{
DB.Close();
}
dataset.Tables[0].AcceptChanges();
All_Admin.EditItemIndex = -1;
DataBind();
}
具体的 你可以找找帮助
或者给我发消息
adapter.Update(dataset.Tables[0]);
SqlCommandBuilder objcmd=new SqlCommandBuilder(连接字符串)