同一个页面几次操作出现的问题

greatdreamworld 2003-09-14 08:57:52
建立了一个数据网格绑定的(DataGrid)页面,可以实现查询、修改、删除,现在有个问题:
我对该网格的数据进行操作时(比如修改),第一次可以正常修改没问题,可是在同一个
页面进行第2、3次修改时(同一个地方),页面提交的非常慢,最后提示“找不到页面”
为什么有这种情况了?是我程序的结构有问题,还是和数据库有关系了?
数据库是国产的
3X
...全文
16 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
greatdreamworld 2003-09-14
  • 打赏
  • 举报
回复
代码很长 ,截取一些看吧
<script language="C#" runat="server">
OdbcConnection conn;
void Page_Load(object sender, System.EventArgs e)
{

// 连接到DM3数据库

conn = new OdbcConnection("DRIVER={DM3 ODBC30 DRIVER};DSN=dm3;UID=SYSDBA;PWD=mensa;SERVER=localhost");

Message20.Text="请注意:原价值的单位是\"元\";重量的单位是\"吨\"。"+"<br>";
Express.Text="单击左边的按钮用于添加新的设备";
if(!(Page.IsPostBack))
{
Binding();
conn.Close(); //注意:这一行可要可不要,因为DataAdapter会自动管理连接的打开和连接
}
}

public void Binding()
{
string strSQL="SELECT * FROM 设备 ORDER BY 安装地点";
OdbcDataAdapter da=new OdbcDataAdapter(strSQL,conn);
DataSet ds=new DataSet();
da.Fill(ds);
dataGrid5.DataSource=ds;
dataGrid5.DataBind();
}
public void DEDR_Update(Object sender,DataGridCommandEventArgs E)
{
object weightvalue=null;
object taishu=null;
string strSQL="SELECT * FROM 设备";//构建sql语句
OdbcDataAdapter da=new OdbcDataAdapter(strSQL,conn);//构建托管对象,以连接数据源与Dataset,dataset中有datatable
DataSet ds=new DataSet();//新建一个dataset用以包含datatable表格数据

da.Fill(ds,"设备");
DataTable dta=null;
dta=ds.Tables[0];//调出dataset中的表“设备”用以方便的对行(rows)进行处理 int row=Convert.ToInt32(E.Item.ItemIndex);//获取要更新的那一行的行号
OdbcCommand odc=new OdbcCommand();
odc.Connection=conn;

TextBox EditText1=null;
EditText1=(TextBox)E.Item.FindControl("Edit_MachineName");
dta.Rows[row]["设备名称"]=EditText1.Text.Trim();


TextBox EditText2=null;
EditText2=(TextBox)E.Item.FindControl("Edit_MachineXinghao");
dta.Rows[row]["型号规格"]=EditText2.Text;

TextBox EditText3=null;
EditText3=(TextBox)E.Item.FindControl("Edit_ZhizaoDanwei");
dta.Rows[row]["制造单位"]=EditText3.Text;

TextBox EditText4=null;//日期的输入要合乎规范,这个地方以后要加个验证组件(yyyy-mm-dd)
EditText4=(TextBox)E.Item.FindControl("Edit_ZhizaoDate");
dta.Rows[row]["制造日期"]=Convert.ToDateTime(EditText4.Text);

TextBox EditText5=null;
EditText5=(TextBox)E.Item.FindControl("Edit_Zhizaobianhao");
dta.Rows[row]["制造编号"]=EditText5.Text;

TextBox EditText6=null;
EditText6=(TextBox)E.Item.FindControl("Edit_OriginDate");
dta.Rows[row]["始用日期"]=DateTime.Parse(EditText6.Text).ToString("u",DateTimeFormatInfo.InvariantInfo);

TextBox EditText7=null;
EditText7=(TextBox)E.Item.FindControl("Edit_EngineNum");
try{
dta.Rows[row]["电动机总台数"]=Convert.ToInt32(EditText7.Text.Trim());
}
catch(FormatException ex)
{
dta.Rows[row]["电动机总台数"]=Convert.DBNull;
//taishu=null;
}

TextBox EditText8=null;
EditText8=(TextBox)E.Item.FindControl("Edit_EnginePower");
try{
dta.Rows[row]["电动机总千瓦"]=Single.Parse(EditText8.Text.Trim());//重点所在,注意总结
}
catch(FormatException exx)
{
dta.Rows[row]["电动机总千瓦"]=Convert.DBNull;
}

TextBox EditText9=null;
EditText9=(TextBox)E.Item.FindControl("Edit_OriginValue");
try{
dta.Rows[row]["原价值"]=Convert.ToInt32(EditText9.Text.Trim());
}
catch(FormatException exx)
{
dta.Rows[row]["原价值"]=Convert.DBNull;
}

TextBox EditText11=null;
EditText11=(TextBox)E.Item.FindControl("Edit_Address");
dta.Rows[row]["安装地点"]=EditText11.Text.Trim();

TextBox EditText12=null;
EditText12=(TextBox)E.Item.FindControl("Edit_GongYi");
dta.Rows[row]["工艺参数"]=EditText12.Text;

TextBox EditText13=null;
EditText13=(TextBox)E.Item.FindControl("Edit_Remark");
dta.Rows[row]["备注"]=EditText13.Text;

/*重量这一列有点问题:如果本来为空,改为不空、或者本来不空改为另外一个不非空都可以
但是,如果本来不空改为空就有问题***********************************************/
TextBox EditText10=null;
EditText10=(TextBox)E.Item.FindControl("Edit_Weight");
string weighttext=EditText10.Text.Trim();


try
{
dta.Rows[row]["重量"]=Convert.ToDouble(weighttext);
//dta.Rows[row]["重量"]=Convert_to_null(weighttext);
}
catch(Exception ex)
{
StateMessage.Text="输入重量不为浮点数,本系统自动将此不合法输入设为空值,如果想加入值,请继续点击\"修改\"!"+"<br>";
//con.Alert("输入重量不为浮点数!");
//dta.Rows[row]["重量"]=System.Convert.DBNull;
dta.Rows[row]["重量"]=Convert.DBNull;
}

//if(dta.Rows[row]["重量"]==Convert.DBNull)
//{
odc.CommandText="UPDATE 设备 SET 设备名称='"+Convert.ToString(dta.Rows[row]["设备名称"]).Trim()+
"',型号规格='"+dta.Rows[row]["型号规格"].ToString().Trim()+
"',制造单位='"+dta.Rows[row]["制造单位"].ToString().Trim()+
"',制造日期='"+dta.Rows[row]["制造日期"]+
"',制造编号='"+dta.Rows[row]["制造编号"].ToString().Trim()+
"',始用日期='"+dta.Rows[row]["始用日期"]+
"',电动机总台数="+From_DBNull_to_null(dta.Rows[row]["电动机总台数"])+
",电动机总千瓦="+From_DBNull_to_null(dta.Rows[row]["电动机总千瓦"])+
",原价值="+From_DBNull_to_null(dta.Rows[row]["原价值"])+
",重量="+From_DBNull_to_null(dta.Rows[row]["重量"])+
",安装地点='"+dta.Rows[row]["安装地点"]+
"',工艺参数='"+dta.Rows[row]["工艺参数"]+
"',备注='"+dta.Rows[row]["备注"]+
"' WHERE 设备编号='"+(string)dta.Rows[row][0]+"'";
da.UpdateCommand=odc;
try
{
da.Update(ds,"设备");//用于更新数据源,与updatecommand相配合 dataGrid5.EditItemIndex=-1;
dataGrid5.DataSource=dta.DefaultView;//用于界面显示
dataGrid5.DataBind();
StateMessage.Text+="<b>更新数据成功</b>";
}
catch(Exception ee)
{
StateMessage.Text+="<b>更新数据失败</b></br>"+"error message:"+ee.Message+
"</br>err source:"+ee.Source+"</br>err stacktrace:"+ee.StackTrace;
}
}
public object From_DBNull_to_null(object ResourceValue)
{
if(ResourceValue==Convert.DBNull)
{return "null";}
else
{return ResourceValue;}
}

</script>
clxxj 2003-09-14
  • 打赏
  • 举报
回复
先将得代码贴出来看看
greatdreamworld 2003-09-14
  • 打赏
  • 举报
回复
可能是哪些方面有问题,给个提示吧
树猫 2003-09-14
  • 打赏
  • 举报
回复
应该是你的程序有问题

62,040

社区成员

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

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

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

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