In my project i have data entry grid (Rad GRID) with Rad Combo box . problem I am facing is, when I press "Add Row" button,
all rad combo box value changing to first raw of the database table. please help me to sort this issue
all rad combo box value changing to first raw of the database table. please help me to sort this issue
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Height="75px" Width="75px" Transparency="50"> <img alt="Loading..." src='<%= RadAjaxLoadingPanel.GetWebResourceUrl(Page, "Telerik.Web.UI.Skins.Default.Ajax.loading.gif") %>' style="border:0;" /> </telerik:RadAjaxLoadingPanel> <telerik:RadGrid ID="RadGrid1" AllowMultiRowSelection="true" AllowMultiRowEdit="true" Skin="WebBlue" runat="server" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" Width="97%" PageSize="14" AllowAutomaticUpdates="True" AllowPaging="True" AutoGenerateColumns="False" OnNeedDataSource="RadGrid1_NeedDataSource" ShowStatusBar="true" > <PagerStyle Mode="Slider" /> <ClientSettings> <Selecting AllowRowSelect="true" /> </ClientSettings> <MasterTableView CommandItemDisplay="Top" AutoGenerateColumns="False" Width="100%"> <CommandItemTemplate> <div style="padding:10px 0px;"> <asp:Button runat="server" ID="btnAdd" Text="Add row" OnClick="btnAdd_Click" /> <asp:LinkButton ID="LinkButton1" OnClientClick="javascript:return confirm('Delete all selected Products?')" runat="server" CommandName="DeleteSelected" CausesValidation="false" ><img style="border:0px;vertical-align:middle;" alt="" src="images/Delete.gif" /> Delete</asp:LinkButton> </div> </CommandItemTemplate> <Columns> <telerik:GridClientSelectColumn HeaderStyle-Width="40px" /> <telerik:GridTemplateColumn UniqueName="pk_productid" HeaderText="Product Code" > <FooterTemplate> Template footer</FooterTemplate> <FooterStyle VerticalAlign="Middle" HorizontalAlign="Center" /> <ItemTemplate> <telerik:RadComboBox runat="server" ID="RadComboBox1" AutoPostBack="true" DataSourceID="sqlproduct" MarkFirstMatch="true" EnableLoadOnDemand="True" DataTextField="pk_productid" OnItemsRequested="RadComboBox1_ItemsRequested" OnClientItemsRequested="UpdateItemCountField" OnDataBound="RadComboBox1_DataBound" OnItemDataBound="RadComboBox1_ItemDataBound" HighlightTemplatedItems="true" Height="140px" Width="220px" DropDownWidth="420px" OnSelectedIndexChanged="OnSelectedIndexChangedHandler" > <HeaderTemplate> <ul> <li class="col1">Product Code</li> <li class="col2">Description</li> </ul> </HeaderTemplate> <ItemTemplate> <ul> <li class="col1"> <%#DataBinder.Eval(Container.DataItem, "pk_productid")%> </li> <li class="col2"> <%#DataBinder.Eval(Container.DataItem, "descript")%></li> </ul> </ItemTemplate> <FooterTemplate> A total of <asp:Literal runat="server" ID="RadComboItemsCount" /> items </FooterTemplate> </telerik:RadComboBox> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Quantity" SortExpression="prQty" UniqueName="prqty" EditFormColumnIndex="1"> <HeaderStyle Width="80px" /> <ItemTemplate> <asp:TextBox runat="server" ID="txtprqty" Text='<%# Bind("prQty", "{0:#.##}") %>'></asp:TextBox> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> </MasterTableView> </telerik:RadGrid><br /> </div> </div> <asp:SqlDataSource ID="sqlds2" runat="server" ConnectionString="<%$ ConnectionStrings:conDB %>" SelectCommand="SELECT fk_productID,prqty from tblPurchaserequest where docnum=0"> </asp:SqlDataSource> <asp:SqlDataSource ID="sqlProduct" runat="server" ConnectionString="<%$ ConnectionStrings:conDB %>" SelectCommand="SELECT TOP 5 pk_productID,descript from tblProduct"> </asp:SqlDataSource> <script type="text/javascript"> function UpdateItemCountField(sender, args) { //set the footer text sender.get_dropDownElement().lastChild.innerHTML = "A total of " + sender.get_items().get_count() + " items"; } </script>Protected Sub RadComboBox1_DataBound(ByVal sender As Object, ByVal e As EventArgs) 'set the initial footer label CType(cmbsite.Footer.FindControl("RadComboItemsCount"), Literal).Text = Convert.ToString(cmbsite.Items.Count) End Sub Protected Sub RadComboBox1_ItemsRequested(ByVal sender As Object, ByVal e As RadComboBoxItemsRequestedEventArgs) Dim sql As String = "SELECT * from tblProduct WHERE pk_productID LIKE '%" + e.Text + "%' or descript LIKE '%" + e.Text + "%'" sqlProduct.SelectCommand = sql Dim comboBox As RadComboBox = DirectCast(sender, RadComboBox) comboBox.DataBind() End Sub Protected Sub RadComboBox1_ItemDataBound(ByVal sender As Object, ByVal e As RadComboBoxItemEventArgs) e.Item.Text = (DirectCast(e.Item.DataItem, DataRowView))("pk_productID").ToString() e.Item.Value = (DirectCast(e.Item.DataItem, DataRowView))("descript").ToString() End Sub Protected Sub OnSelectedIndexChangedHandler(ByVal sender As Object, ByVal e As RadComboBoxSelectedIndexChangedEventArgs) Session("pk_productid") = e.Value End Sub Protected Sub RadGrid1_NeedDataSource(ByVal source As Object, ByVal e As Telerik.Web.UI.GridNeedDataSourceEventArgs) 'Bind the grid to the source RadGrid1.DataSource = GetData If IsPostBack Then ViewState("dt") = dt dt = CType(ViewState("dt"), DataTable) RadGrid1.DataSource = dt End If End Sub Protected Property GetData() As DataTable Get If ViewState("dt") Is Nothing Then dt.Columns.Add("pk_productid", GetType(String)) dt.Columns.Add("prqty", GetType(Int32)) dt.Rows.Add("-", 0) ViewState("dt") = dt Else dt = DirectCast(ViewState("dt"), DataTable) End If Return dt End Get Set(ByVal value As DataTable) 'Add the source to viewstate ViewState("dt") = value End Set End Property Protected Sub btnAdd_Click(ByVal sender As Object, ByVal e As EventArgs) dt = CType(ViewState("dt"), DataTable) For Each dataItem As GridDataItem In RadGrid1.Items dt.Rows(dataItem.ItemIndex)("pk_productid") = CType(dataItem("pk_productid").FindControl("RadComboBox1"), RadComboBox).SelectedItem dt.Rows(dataItem.ItemIndex)("prqty") = CType(dataItem("prqty").FindControl("txtprqty"), TextBox).TextNext ViewState("dt") = AddRow(dt) RadGrid1.Rebind() End Sub Private Function AddRow(ByVal dt As DataTable) As DataTable Dim dr As DataRow = dt.NewRow dr(0) = "-" dr(1) = 0 dt.Rows.Add(dr) Return dt End Function