private void Mydg_UpdateCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{ SqlConnection myConnection=new SqlConnection(SQLCONNECTIONSTRING);
string strSQL="Update Raises Set NewSalary=@NewSalary,TakeEffectDate=@TakeEffectDate,Behave=@Behave,Re=@Re,Effect=@Effect Where ViewOrder=@ViewOrder";
SqlCommand myCommand=new SqlCommand(strSQL,myConnection);
myConnection.Open();
myCommand.Parameters.Add(new SqlParameter("@ViewOrder",SqlDbType.Int));
myCommand.Parameters.Add(new SqlParameter("@NewSalary",SqlDbType.Decimal,2));
myCommand.Parameters.Add(new SqlParameter("@TakeEffectDate",SqlDbType.DateTime));
myCommand.Parameters.Add(new SqlParameter("@Behave",SqlDbType.VarChar,50));
myCommand.Parameters.Add(new SqlParameter("@Re",SqlDbType.VarChar,50));
myCommand.Parameters.Add(new SqlParameter("@Effect",SqlDbType.VarChar,10));
myCommand.Parameters["@NewSalary"].Value=((TextBox)e.Item.Cells[7].Controls[1]).Text;
myCommand.Parameters["@TakeEffectDate"].Value=((TextBox)e.Item.Cells[8].Controls[1]).Text;
myCommand.Parameters["@Behave"].Value=((TextBox)e.Item.Cells[9].Controls[1]).Text;
myCommand.Parameters["@Re"].Value=((TextBox)e.Item.Cells[10].Controls[1]).Text;
myCommand.Parameters["@Effect"].Value=((RadioButtonList)e.Item.Cells[11].Controls[1]).SelectedValue;
myCommand.Parameters["@ViewOrder"].Value=((Label)e.Item.Cells[0].Controls[1]).Text;
//Convert.ToString(int.Parse(e.Item.ItemIndex.ToString())+1); 这句在利用了页面提交后,更新数据时异常.
myCommand.ExecuteNonQuery();
Mydg.EditItemIndex=-1;
myConnection.Close();
BindDataGrid();
}如果Effect=1时,提示不能更新.怎么做呢?我试过像下面这样做.做一个判断:
string effect = ((RadioButtonList)e.Item.Cells[11].Controls[1]).SelectedValue
if(effect == "1")
{
Response.Write("<script>alert('error!)</script>");
}
但用了这个判断后,须然Effect开始时并不为"1",但只要我更新为"1"后,就弹出提示了.我不要这样.判断那里应该怎样写?谢谢!
{ SqlConnection myConnection=new SqlConnection(SQLCONNECTIONSTRING);
string strSQL="Update Raises Set NewSalary=@NewSalary,TakeEffectDate=@TakeEffectDate,Behave=@Behave,Re=@Re,Effect=@Effect Where ViewOrder=@ViewOrder";
SqlCommand myCommand=new SqlCommand(strSQL,myConnection);
myConnection.Open();
myCommand.Parameters.Add(new SqlParameter("@ViewOrder",SqlDbType.Int));
myCommand.Parameters.Add(new SqlParameter("@NewSalary",SqlDbType.Decimal,2));
myCommand.Parameters.Add(new SqlParameter("@TakeEffectDate",SqlDbType.DateTime));
myCommand.Parameters.Add(new SqlParameter("@Behave",SqlDbType.VarChar,50));
myCommand.Parameters.Add(new SqlParameter("@Re",SqlDbType.VarChar,50));
myCommand.Parameters.Add(new SqlParameter("@Effect",SqlDbType.VarChar,10));
myCommand.Parameters["@NewSalary"].Value=((TextBox)e.Item.Cells[7].Controls[1]).Text;
myCommand.Parameters["@TakeEffectDate"].Value=((TextBox)e.Item.Cells[8].Controls[1]).Text;
myCommand.Parameters["@Behave"].Value=((TextBox)e.Item.Cells[9].Controls[1]).Text;
myCommand.Parameters["@Re"].Value=((TextBox)e.Item.Cells[10].Controls[1]).Text;
myCommand.Parameters["@Effect"].Value=((RadioButtonList)e.Item.Cells[11].Controls[1]).SelectedValue;
myCommand.Parameters["@ViewOrder"].Value=((Label)e.Item.Cells[0].Controls[1]).Text;
//Convert.ToString(int.Parse(e.Item.ItemIndex.ToString())+1); 这句在利用了页面提交后,更新数据时异常.
myCommand.ExecuteNonQuery();
Mydg.EditItemIndex=-1;
myConnection.Close();
BindDataGrid();
}如果Effect=1时,提示不能更新.怎么做呢?我试过像下面这样做.做一个判断:
string effect = ((RadioButtonList)e.Item.Cells[11].Controls[1]).SelectedValue
if(effect == "1")
{
Response.Write("<script>alert('error!)</script>");
}
但用了这个判断后,须然Effect开始时并不为"1",但只要我更新为"1"后,就弹出提示了.我不要这样.判断那里应该怎样写?谢谢!
解决方案 »
- 急!急!急!文件上传放置服务器之后找不到页面。
- 小例子,说明使用参数化sql避免注入和获得sp的执行效率
- 请问IHttpHandler能够输出2进制的文件流吗?
- |M| 我知道nextSibling是行到下一个相同控件 那得到下一个,上一个,又是什么样的方法
- 如何实现系统退出??? 急!!!!!!!
- 一條語句
- 一个伤脑筋的问题??
- 我想在网页中弹出winform窗体,该怎么做
- 用VS2003.NET怎么连接不了SQL SERVER,请高手指点!!!!
- Table控件循环嵌套 Table 控件问题
- 帮忙 解决一下 这个 正则问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 用C# Asp.net如何调用本机的播放器
读取DataGrid后,Effect如果为1的话,就提示此条记录不能修改.
{
Response.Write("<script>alert('error!)</script>");
effect=0;
}
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Configuration;namespace Raises.Page
{
/// <summary>
/// QueryRaise 的摘要说明。
/// </summary>
public class QueryRaise : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid Mydg;
protected System.Web.UI.WebControls.LinkButton PageFirst;
protected System.Web.UI.WebControls.LinkButton PagePrev;
protected System.Web.UI.WebControls.LinkButton PageNext;
protected System.Web.UI.WebControls.LinkButton PageLast;
private readonly string SQLCONNECTIONSTRING=ConfigurationSettings.AppSettings["SQLCONNECTIONSTRING"].ToString(); private void BindDataGrid()
{
SqlConnection myConnection = new SqlConnection(SQLCONNECTIONSTRING);
string sqlstr = "Select * from Raises";
SqlCommand myCommand = new SqlCommand(sqlstr,myConnection);
myConnection.Open();
SqlDataAdapter da = new SqlDataAdapter(myCommand);
DataSet ds = new DataSet();
da.Fill(ds);
Mydg.DataSource = ds;
Mydg.DataBind();
myConnection.Close();
} private void Mydg_PageIndexChanged(object source,System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
Mydg.CurrentPageIndex = e.NewPageIndex;
BindDataGrid();
}
private void PageCut_Click(object sender,System.EventArgs e)
{
string commangArg=((LinkButton)sender).CommandArgument;
switch(commangArg)
{
case "First":{Mydg.CurrentPageIndex = 0;break;}
case "Prev":{Mydg.CurrentPageIndex = (int)Math.Max(0,Mydg.CurrentPageIndex - 1);break;}
case "Next":{Mydg.CurrentPageIndex = (int)Math.Min(Mydg.PageCount - 1,Mydg.CurrentPageIndex + 1);break;}
case "Last":{Mydg.CurrentPageIndex = Mydg.PageCount - 1;break;}
default:{break;}
}
BindDataGrid();
IsFirstLastPage();
}
private void IsFirstLastPage()
{
if(Mydg.PageCount > 0)
{
if(Mydg.PageCount != 1)
{
if(Mydg.CurrentPageIndex == 0)
{
PagePrev.Enabled = false;
}
else
{
PagePrev.Enabled = true;
}
if(Mydg.CurrentPageIndex == Mydg.PageCount -1)
{
PageNext.Enabled = false;
}
else
{
PageNext.Enabled = true;
}
}
else
{
PagePrev.Enabled = false;
PageNext.Enabled = false;
}
}
else
{
PageFirst.Enabled = false;
PageLast.Enabled = false;
PageNext.Enabled = false;
PagePrev.Enabled = false;
}
}
private void Mydg_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
Mydg.EditItemIndex=(int)e.Item.ItemIndex;
Mydg.DataBind();
BindDataGrid(); } private void Mydg_CancelCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
Mydg.EditItemIndex=-1;
BindDataGrid();
} private void Mydg_UpdateCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{ SqlConnection myConnection=new SqlConnection(SQLCONNECTIONSTRING);
string strSQL2="select Effect from raises where ViewOrder=@ViewOrder";
string strSQL="Update Raises Set NewSalary=@NewSalary,TakeEffectDate=@TakeEffectDate,Behave=@Behave,Re=@Re,Effect=@Effect Where ViewOrder=@ViewOrder";
SqlCommand myCommand=new SqlCommand(strSQL,myConnection);
myConnection.Open(); myCommand.Parameters.Add(new SqlParameter("@ViewOrder",SqlDbType.Int));
myCommand.Parameters.Add(new SqlParameter("@NewSalary",SqlDbType.Decimal,2));
myCommand.Parameters.Add(new SqlParameter("@TakeEffectDate",SqlDbType.DateTime));
myCommand.Parameters.Add(new SqlParameter("@Behave",SqlDbType.VarChar,50));
myCommand.Parameters.Add(new SqlParameter("@Re",SqlDbType.VarChar,50));
myCommand.Parameters.Add(new SqlParameter("@Effect",SqlDbType.VarChar,10));
myCommand.Parameters["@NewSalary"].Value=((TextBox)e.Item.Cells[7].Controls[1]).Text;
myCommand.Parameters["@TakeEffectDate"].Value=((TextBox)e.Item.Cells[8].Controls[1]).Text;
myCommand.Parameters["@Behave"].Value=((TextBox)e.Item.Cells[9].Controls[1]).Text;
myCommand.Parameters["@Re"].Value=((TextBox)e.Item.Cells[10].Controls[1]).Text;
myCommand.Parameters["@Effect"].Value=((RadioButtonList)e.Item.Cells[11].Controls[1]).SelectedValue;
myCommand.Parameters["@ViewOrder"].Value=((Label)e.Item.Cells[0].Controls[1]).Text;
//Convert.ToString(int.Parse(e.Item.ItemIndex.ToString())+1); 这句在利用了页面提交后,更新数据时异常.
myCommand.ExecuteNonQuery();
Mydg.EditItemIndex=-1;
myConnection.Close();
BindDataGrid();
} private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
BindDataGrid();
IsFirstLastPage();
}
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Mydg.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.Mydg_PageIndexChanged);
this.Mydg.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.Mydg_CancelCommand);
this.Mydg.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.Mydg_EditCommand);
this.Mydg.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.Mydg_UpdateCommand);
this.PageFirst.Click += new System.EventHandler(this.PageCut_Click);
this.PagePrev.Click += new System.EventHandler(this.PageCut_Click);
this.PageNext.Click += new System.EventHandler(this.PageCut_Click);
this.PageLast.Click += new System.EventHandler(this.PageCut_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
}
}
myCommand.Parameters.Add(new SqlParameter("@TakeEffectDate",SqlDbType.DateTime));myCommand.Parameters["@TakeEffectDate"].Value=((TextBox)e.Item.Cells[8].Controls[1]).Text;
其他的还没看,可能还有,楼主仔细查一查
myCommand.Parameters.Add(new SqlParameter("@TakeEffectDate",SqlDbType.DateTime));myCommand.Parameters["@TakeEffectDate"].Value=((TextBox)e.Item.Cells[8].Controls[1]).Text;
这句的数据类型怎样匹配呢?我运行起来没出错.
我只想如果某条记录的Effect值为1时,就不能修改这条记录
private void Mydg_CheckEffect(object sender,System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemIndex > -1)
{
DataRowView row = (DataRowView)e.Item.DataItem;
if(row["Effect"].ToString() == "1")
{
LinkButton lbtnEdit = e.Item.Cells[13].Controls[1] as LinkButton;
LinkButton lbtnDelete = e.Item.Cells[14].Controls[1] as LinkButton;
lbtnEdit.Enabled = false;
lbtnDelete.Enabled = false;
}
}