Hi,
I have a page with a Button, a TextBox, a WebDataGrid and a ObjectDataSource, when I edited some field on the datagird and key down Enter, and have an error: Requested reocrd cannot be found by key. How can I fix the code? thx.
The following is my code.
.aspx----------------------------------TextBox<asp:TextBox ID="txtSysGroupName" runat="server"></asp:TextBox>
Button<asp:Button ID="btnSelect" runat="server" onclick="btnSelect_Click" Text="Search" />
ObjectDataSource <asp:ObjectDataSource ID="odsSysGroup" runat="server" DeleteMethod="Delete" InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" onupdating="odsSysGroup_Updating" SelectMethod="GetData" TypeName="WebApplication_DMS.dsDMSSTableAdapters.sysGroupTableAdapter" UpdateMethod="Update"> <DeleteParameters> <asp:Parameter Name="Original_sysGroupID" Type="String" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="sysGroupID" Type="String" /> <asp:Parameter Name="sysGroupName" Type="String" /> <asp:Parameter Name="sysGroupStatus" Type="Int32" /> <asp:Parameter Name="sysComID" Type="String" /> <asp:Parameter Name="memo" Type="String" /> <asp:Parameter Name="actUser" Type="String" /> <asp:Parameter Name="actTime" Type="DateTime" /> </InsertParameters> <UpdateParameters> <asp:Parameter Name="sysGroupName" Type="String" /> <asp:Parameter Name="sysGroupStatus" Type="Int32" /> <asp:Parameter Name="sysComID" Type="String" /> <asp:Parameter Name="memo" Type="String" /> <asp:Parameter Name="actUser" Type="String" /> <asp:Parameter Name="actTime" Type="DateTime" /> <asp:Parameter Name="Original_sysGroupID" Type="String" /> </UpdateParameters> </asp:ObjectDataSource>
.cs----------------------------protected void btnSelect_Click(object sender, EventArgs e){ odsSysGroup.SelectParameters.Clear(); if (string.IsNullOrEmpty(txtSysGroupName.Text)) { odsSysGroup.SelectMethod = "GetDataBySysUserID"; odsSysGroup.SelectParameters.Add("SysUserID", User.Identity.Name); } else { odsSysGroup.SelectMethod = "GetDataBySysGroupName"; odsSysGroup.SelectParameters.Add("SysGroupName", txtSysGroupName.Text); odsSysGroup.SelectParameters.Add("SysUserID", User.Identity.Name); }
WebDataGrid1.DataSource = odsSysGroup; WebDataGrid1.DataBind();}
Sorry Nikolay, I explained again.
I have a WebDataGrid with a TemplateField, that have a button used to UpdateMyData.
How can I do in which event? thx.
Hi Su,
I didn't understand your question, can you please clarify?
Hello Nikolay,
Thank you, I solved my problem, I write:
protected void odsSysGroup_Updating(object sender, ObjectDataSourceMethodEventArgs e){ e.InputParameters["BOOKS"] = "MyNewBook";}
Above the codes can be used in a button on it?
If My WebDataGrid have a TemplateField and in that have a button(btnUpdateBook),btnUpdateBook.CommandArgument="MyNewBook";btnUpdateBook.Command="MyUpdate";
I am tryprotected void WebDataGrid1_ItemCommand(object sender, Infragistics.Web.UI.GridControls.HandleCommandEventArgs e){ string arg = e.CommandArgument.ToString(); switch (e.CommandName) { case "myStop": mapperBooks.UpdateBookByID("MyNewBook", sysID); break } BindGrid1();}
But WebDataGrid1 seems not reflash.
Hello,
You could handle the RowUpdating event, check the new values and if there is a value "Book", cancel the row update and update the data source manually with a different value of your choice.
Thank you, I solved my problem with set data source every time the page loads.protected void Page_Load(object sender, EventArgs e){ GetData();}
I have another problem.
How can I change data after user modified? Or can I change objectdatasource.UpdateMethod at running-time?
For example, when I type Book, I want change Book to MyBook.