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();}
Hi Su Min,
You should make sure that the grid's data source is set every time the page loads. Also you could try setting EnableDataViewState and EnableViewState to true.
Let me know if this helps.
Hello Nikolay,
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.
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.
Hi Su,
I didn't understand your question, can you please clarify?
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.
Hello,
You can update your data source manually in the RowUpdating event - http://ko.infragistics.com/community/blogs/developer_support/archive/2012/02/03/webdatagrid-manual-crud.aspx. It will fire after postback, in case you have made any changes to the grid. And if you are using AutoCRUD, the grid will update the data source automatically.
But I want to use button to change some field directly, How should I trigger it?
I thought should type some code in WebDataGrid1.ItemCommand event?likeprotected void WebDataGrid1_ItemCommand(object sender, Infragistics.Web.UI.GridControls.HandleCommandEventArgs e){ string arg = e.CommandArgument.ToString(); switch (e.CommandName) { case "UpdateProductName": break; case "UpdateProductCount": break; } WebDataGrid1.DataSrouce = ObjectDataSourceProduct; WebDataGrid1.DataBind();}
Hello Su Min,
Please refer to this thread - http://ko.infragistics.com/community/forums/p/74785/378909.aspx for further questions on the matter.
Hi Nikolay,
In the post - http://ko.infragistics.com/community/forums/t/74785.aspx is the same question.
the button-btnStop want to change "sysGroupStatus" to "60"the button-btnDelete want to change "sysGroupStatus" to "80"
How should I do?
What do you mean by "change a field directly"? If you have made some changes to the grid, clicking a button and initiating a postback will automatically save the changes to the datasource.