积极答复者
奇怪的问题...

问题
-
AJAX
一个 updatepanel 里面 一个 GridView 一个 dropdownlist 一个 插入数据表单
在IE里怎么用都没事!
在FF 里 一般情况下没事.... 但是 如果 插入过数据 过修改过数据 以后 点刷新 在IE 里是不会 有任何问题 但是在 FF里 却不行 因为在FF里 刷新 会再次 postback 就是 执行我上次的修改操作 或插入操作之类的 然后就会引发异常
而且 FF的错误控制台 会显示乱码...
只看懂 calling method: [nsIDOMEventListener::handleEvent
我觉得 是 scriptManager 在调用服务器端方法 时 失败 造成的
也就是说 再次刷新时 在执行默认的一些数据源select方法之前 先再次异步执行了 update 或insert 然后 就出了问题....
再点任何 按钮 试图操作时 都无效 整个脚本似乎 都无法正常工作 ...
错误: [Exception... "'Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: du¶áoàH ïýò_O' when calling method: [nsIDOMEventListener::handleEvent]" nsresult: "0x8057001c (NS_ERROR_XPC_JS_THREW_JS_OBJECT)" location: "<unknown>" data: no]
答案
全部回复
-
过程就是 比如 我选择 GridView 中的某项数据后更新 然后刷新 再进行 异步 操作 都无效 提示
呢就是那个乱码的 而ie下 怎么用都没任何问题....
FF 最离谱 的是 有时候. 我没刷新 就放那. 过个10分钟 再点 也 出现异常!!!
aspx-------------------------------------------------------------------------------------------------------------------------------------------------------------
<asp
criptManager ID="ScriptManager1" runat="server">
</aspcriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" DataSourceID="ObjectDataSource1"
AutoGenerateColumns="False" DataKeyNames="u_sysid"
onrowupdated="GridView1_RowUpdated">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:TemplateField HeaderText="系统ID">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("u_sysid") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="u_username" HeaderText="用户名" />
<asp:BoundField DataField="u_pw" HeaderText="密码" />
<asp:BoundField DataField="u_e_mail" HeaderText="电子信箱" />
<asp:TemplateField HeaderText="注册日期">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("u_jointime") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Label ID="Label3" runat="server" Text="请选择您要查询的ID"></asp:Label>
:
<aspropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
DataSourceID="ObjectDataSource2" DataTextField="u_username"
DataValueField="u_sysid" AppendDataBoundItems="True"
CausesValidation="True">
<asp:ListItem Value="0">请选择用户</asp:ListItem>
</aspropDownList>
<br />
<aspetailsView ID="DetailsView1" runat="server"
DataSourceID="ObjectDataSource3" Height="50px" Width="125px">
<Fields>
<asp:CommandField ShowInsertButton="True" />
</Fields>
</aspetailsView>
<br />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="GridView1" />
<asp:AsyncPostBackTrigger ControlID="DetailsView1" />
<asp:AsyncPostBackTrigger ControlID="DropDownList1" />
</Triggers>
</asp:UpdatePanel>
<aspbjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetDataSet_userinfo"
TypeName="DoNet_AJAX_Mxjia.SqlCtrl_StorePorcedure_userinfo"
UpdateMethod="UpDate_userinfo" InsertMethod="Insert_userinfo">
<UpdateParameters>
<asparameter Name="u_username" Type="String" />
<asparameter Name="u_pw" Type="String" />
<asparameter Name="u_e_mail" Type="String" />
<asparameter Name="u_jointime" Type="String" />
<asparameter Name="u_sysid" Type="Int32" />
</UpdateParameters>
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" DefaultValue="8" Name="u_sysid"
PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
<InsertParameters>
<asparameter Name="u_username" Type="String" />
<asparameter Name="u_pw" Type="String" />
<asparameter Name="u_e_mail" Type="String" />
<asparameter Name="u_jointime" Type="String" />
<asparameter Name="u_sysid" Type="Int32" />
</InsertParameters>
</aspbjectDataSource>
<aspbjectDataSource ID="ObjectDataSource2" runat="server"
SelectMethod="GetDataSet_userinfo"
TypeName="DoNet_AJAX_Mxjia.SqlCtrl_StorePorcedure_userinfo">
</aspbjectDataSource>
<aspbjectDataSource ID="ObjectDataSource3" runat="server"
InsertMethod="Insert_userinfo" SelectMethod="GetDataSet_userinfo"
TypeName="DoNet_AJAX_Mxjia.SqlCtrl_StorePorcedure_userinfo">
<SelectParameters>
<asparameter DefaultValue="ALL" Name="all" Type="String" />
</SelectParameters>
<InsertParameters>
<asparameter Name="u_username" Type="String" />
<asparameter Name="u_pw" Type="String" />
<asparameter Name="u_e_mail" Type="String" />
<asparameter Name="u_jointime" Type="String" />
<asparameter Name="u_sysid" Type="Int32" />
</InsertParameters>
</aspbjectDataSource>
cs-------------------------------------------------------------------------------------------------------------------------------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
ScriptManager1.Dispose();
UpdatePanel1.Dispose();
GridView1.Dispose();
DropDownList1.Dispose();
DetailsView1.Dispose();
ObjectDataSource1.Dispose();
ObjectDataSource2.Dispose();
ObjectDataSource3.Dispose();
}
这些是后加的. 如果不加. 在 FireFox3.0中 就会出现 前面描述的问题sql-------------------------------------------------------------------------------------------------------------------------------------------------------------
public DataSet GetDataSet_userinfo(int u_sysid)
{
SqlConnection Conn = new SqlConnection();
Conn.ConnectionString = ConnectString;
SqlDataAdapter Ada = new SqlDataAdapter();
Ada.SelectCommand = new SqlCommand("Select_userinfo",Conn);
Ada.SelectCommand.CommandType = CommandType.StoredProcedure;
Ada.SelectCommand.Parameters.AddWithValue("@u_sysid", u_sysid);
DataSet Ds = new DataSet();
Ada.Fill(Ds, "temp");
Conn.Close();
return Ds;
}public void UpDate_userinfo(string u_username,string u_pw,string u_e_mail,string u_jointime,int u_sysid)
{ // 这里我有个疑问... 我本来只需要4个参数 但是 写方法时 却不得不 全部都写上.否则就报告 泛型方法错误那个//有什么办法. 能让GridView update时只传出我需要的参数呢? 那些不需要更新的参数传进来 浪费啊!
SqlConnection Conn = new SqlConnection();
Conn.ConnectionString = ConnectString;
SqlCommand Cmd = new SqlCommand();
Cmd.Connection = Conn;
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.CommandText = "UpDate_userinfo";
Cmd.Parameters.AddWithValue("@u_username", u_username);
Cmd.Parameters.AddWithValue("@u_pw",u_pw);
Cmd.Parameters.AddWithValue("@u_e_mail", u_e_mail);
Cmd.Parameters.AddWithValue("@u_sysid", u_sysid);
Conn.Open();
Cmd.ExecuteNonQuery();
Conn.Close();}
public void Insert_userinfo(string u_username, string u_pw,string u_e_mail,string u_jointime,string u_info, int u_sysid)
{ // 这里我的参数 问题同上. 我根本不需要那么多参数 .可是不写就报错.//如何设置 数据控件 传哪些 字段呢?
SqlConnection Conn = new SqlConnection();
Conn.ConnectionString = ConnectString;
SqlCommand Cmd = new SqlCommand();
Cmd.Connection = Conn;
Cmd.CommandText = "Insert_userinfo";
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Parameters.AddWithValue("@u_username", u_username);
Cmd.Parameters.AddWithValue("@u_pw", u_pw);
Cmd.Parameters.AddWithValue("@u_e_mail",u_e_mail);
Conn.Open();
Cmd.ExecuteNonQuery();
Conn.Close();
}存储过程 就不帖了 就是 简单的 select update 之类的