This is a migrated thread and some comments may be shown as answers.

Help me! how to select item when i update and insert new record

1 Answer 68 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Khanh
Top achievements
Rank 1
Khanh asked on 18 Apr 2011, 08:09 AM
i'm going code a form for telerik rad grid to index of content for index works . i was selected item when i update and insert new record on one page. But when page.count >1 so result wrong. the item what i insert not seleted and not chage to current page. and i feel difficult to select item what item i just insert and update althrought i test many kind of example on demos but result wrong. Please help me!!!
source code as:

File ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ManagerWorks.ascx.cs" Inherits="IPC_WORKS.UI.UserControl.ManagerWorks" %>

<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>

<style type="text/css">

    .style1

    {

        height: 122px;

        width: 118px;

    }

    .rgHeader

    {}

    .style3

    {

        height: 122px;

        width: 249px;

    }

    .style4

    {

        width: 98px;

    }

    .style6

    {

        width: 111px;

    }

    .style7

    {

        width: 118px;

    }

</style>

<center>

<table>

    <tr>

        <td valign = "top"><table width="100%" style="border-style">

    <tr>

        <td align ="right" class="style7"><asp:Label ID="Label12" runat="server" Text="Tên Công Việc"></asp:Label></td>

        <td class="style6"><asp:TextBox ID="txtWF_TittleName" runat="server" Width="330px" ErrorMessage="Nhập tên công việc"></asp:TextBox></td>

    </tr>

    <tr>

        <td align="right" class="style7"><asp:Label ID="Label11" runat="server" Text="Ngày Khởi Tạo"></asp:Label></td>

        <td class="style4"><telerik:RadDatePicker ID="RdpCreateDate" runat="server"

                Width="150px"></telerik:RadDatePicker></td>

    </tr>

     <tr>

        <td align="right" class="style7"><asp:Label ID="Label7" runat="server" Text="Ngày Bắt Đầu"></asp:Label></td>

        <td class="style6"><telerik:RadDatePicker ID="RdpStartDate" runat="server"

                Width="150px"></telerik:RadDatePicker></td>

    </tr>

    <tr>

        <td align="right" class="style7"><asp:Label ID="Label8" runat="server" Text="Ngày Kết Thúc"></asp:Label></td>

        <td class="style4"><telerik:RadDatePicker ID="RdpEndDate" runat="server" Width="150px">

        </telerik:RadDatePicker></td>

    </tr>

     <tr>

        <td align="right" class="style7"><asp:Label ID="Label5" runat="server"

                Text="Loại Công Việc" Width="113px"></asp:Label></td>

        <td align="left" class="style6">

            <telerik:RadComboBox ID="txtRadTypeCode" AllowCustomText="true"

                MarkFirstMatch="true" runat="server"

                DataTextField="Type_Name" Width="150px"

                DataValueField = "Type_Code" EmptyMessage="Loại công việc">

            </telerik:RadComboBox>

        </td>

    </tr>

      <tr>

        <td align="right" class="style7">

            <asp:Label ID="Label4" runat="server" Text="Mức Độ Khó" Width="99px"></asp:Label>

        </td>

        <td align="left" class="style6">

            <telerik:RadComboBox ID="txtRadLevelCode" AllowCustomText="true"

                MarkFirstMatch="true" runat="server" DataTextField="Level_Name" DataValueField="Level_Code"

                Width="150px" EmptyMessage="Mức độ khó">

            </telerik:RadComboBox>

        </td>

    </tr>

    <tr>

        <td class="style1" align="right">

            <asp:Label ID="Label3" runat="server" Text="Nội Dung Công Việc" ></asp:Label>

        </td>

        <td class="style3" colspan="3">

            <asp:TextBox ID="txtWF_Quote" runat="server" Height="200px"

                TextMode="MultiLine" Width="330px"></asp:TextBox>

        </td>

    </tr>

    <tr>

        <td colspan="4"></td>

    </tr>

    <tr>

        <td colspan="4" align="center">

            <asp:Button ID="btnNew" runat="server" Text = "Tạo Mới" Width="80px" onclick="btnNew_Click" />&nbsp;

            <asp:Button ID="btnOK" runat="server" Text="Cập Nhật" onclick="btnOK_Click" Width="80px"/>&nbsp;

            <asp:Button ID="btnDel" runat ="server" Text = "Xóa" Width="80px" onclick="btnDel_Click"/>&nbsp;

            <asp:Button ID="btnFile" runat ="server" Text ="Tải tài liệu" Width="80px"/>&nbsp;

            <asp:Button ID="btnGrantWorks" runat="server" Text="Giao Việc" Width="80px"/>

        </td>

    </tr>

</table></td>

        <td valign="top">

        <telerik:RadGrid ID="RadGrid_Works" AllowPaging="True" runat="server" OnItemCommand = "RadGrid_Works_ItemCommand"

            OnItemDataBound="RadGrid_Works_ItemDataBound" Width="800px" GridLines="None" 

                AutoGenerateColumns="False" GroupingEnabled="False" Skin="Outlook"

                Height="410px" onpageindexchanged="RadGrid_Works_PageIndexChanged">

        <PagerStyle Mode="NextPrev" />

        <MasterTableView TableLayout="Fixed" DataKeyNames="WF_Code" EditMode="InPlace" ClientDataKeyNames="WF_Code" PageSize="8" InsertItemPageIndexAction="ShowItemOnLastPage">

            <Columns>

                <telerik:GridTemplateColumn HeaderText="STT" DataField="WF_Code" HeaderStyle-Width="5%"  HeaderStyle-HorizontalAlign="Center">

                    <ItemTemplate>

                        <asp:Label ID="lblStt" runat="server" Text="" ></asp:Label>

                    </ItemTemplate>

                    <HeaderStyle HorizontalAlign="Center" Width="5%"></HeaderStyle>

                    <ItemStyle HorizontalAlign="Center" />

                </telerik:GridTemplateColumn>     

                <telerik:GridTemplateColumn UniqueName="WF_TitleName" DataField="WF_TitleName" SortExpression="WF_TitleName" HeaderText="Tên Công Việc " HeaderStyle-Width="20%" HeaderStyle-HorizontalAlign="Center">

                    <ItemTemplate>

                        <asp:Label ID="lblWF_TitleName" Height="36px" runat="server" Text='<%# Eval("WF_TitleName") %>'/>

                        <asp:TextBox ID="txtWF_TitleName" Height="36px" runat="server" Text='<%# Bind("WF_TitleName") %>' Width="20%" Style="display: none"/>

                    </ItemTemplate>

                    <HeaderStyle HorizontalAlign="Center" Width="20%"></HeaderStyle>

                    <ItemStyle HorizontalAlign="Left" />

                </telerik:GridTemplateColumn>

                <telerik:GridTemplateColumn UniqueName="WF_Quote" DataField="WF_Quote" SortExpression="WF_Quote" HeaderText="Nội Dung Công Việc" HeaderStyle-Width="25%" HeaderStyle-HorizontalAlign="Center">

                    <ItemTemplate>

                        <asp:Label ID="lblWF_Quote" runat="server" Height="36px" Text='<%# Eval("WF_Quote") %>'/>

                        <asp:TextBox ID="txtWF_Quote" runat="server" Height="36px" Text='<%# Bind("WF_Quote") %>' Width="20%" Style="display: none" />

                    </ItemTemplate>

                    <HeaderStyle HorizontalAlign="Center" Width="20%"></HeaderStyle>

                    <ItemStyle HorizontalAlign="Left" />

                </telerik:GridTemplateColumn>

                <telerik:GridTemplateColumn UniqueName="Emp_Code" DataField="Emp_Code" SortExpression="Emp_Code" HeaderText="Người Tạo" HeaderStyle-Width="10%" HeaderStyle-HorizontalAlign="Center">

                    <ItemTemplate>

                        <asp:Label ID="lblEmp_Code" Height="36px" runat="server" Text='<%# Eval("Emp_Code") %>'/>

                        <asp:TextBox ID="txtEmp_Code" Height="36px" runat="server" Text='<%# Bind("Emp_Code") %>' Width="10%" Style="display: none" />

                    </ItemTemplate>

                    <HeaderStyle HorizontalAlign="Center" Width="10%"></HeaderStyle>

                    <ItemStyle HorizontalAlign="Center" />

                </telerik:GridTemplateColumn>

                <telerik:GridTemplateColumn UniqueName="WF_StartDate" DataField="WF_StartDate" SortExpression="WF_StartDate" HeaderText="Ngày Bắt Đầu " HeaderStyle-Width="15%" HeaderStyle-HorizontalAlign="Center">

                    <ItemTemplate>

                        <asp:Label ID="lblWF_StartDate" runat="server" Text='<%# Eval("WF_StartDate","{0:d}") %>'/>

                        <asp:TextBox ID="txtWF_StartDate" runat="server" Text='<%# Bind("WF_StartDate","{0:d}") %>' Width="15%" Style="display: none" />

                    </ItemTemplate>

                    <HeaderStyle HorizontalAlign="Center" Width="15%"></HeaderStyle>

                    <ItemStyle HorizontalAlign="Center" />

                </telerik:GridTemplateColumn>

                <telerik:GridTemplateColumn UniqueName="WF_EndDate" DataField="WF_EndDate" SortExpression="WF_EndDate" HeaderText="Ngày Kết Thúc " HeaderStyle-Width="15%" HeaderStyle-HorizontalAlign="Center">

                    <ItemTemplate>

                        <asp:Label ID="lblWF_EndDate"  runat="server" Text='<%# Eval("WF_EndDate","{0:d}") %>'/>

                        <asp:TextBox ID="txtWF_EndDate" runat="server" Text='<%# Bind("WF_EndDate","{0:d}") %>' Width="15%" Style="display: none" />

                    </ItemTemplate>

                    <HeaderStyle HorizontalAlign="Center" Width="15%"></HeaderStyle>

                    <ItemStyle HorizontalAlign="Center" />

                </telerik:GridTemplateColumn>

                <telerik:GridTemplateColumn UniqueName="WF_Status" DataField="WF_Status" SortExpression="WF_Status" HeaderText="Trạng Thái" HeaderStyle-Width="15%" HeaderStyle-HorizontalAlign="Center">

                    <ItemTemplate>

                        <asp:Label ID="lblWF_Status" runat="server" Text='<%# Eval("WF_Status") %>'/>

                        <asp:TextBox ID="txtWF_Status" runat="server" Text='<%# Bind("WF_Status") %>' Width="15%" Style="display: none" />

                    </ItemTemplate>

                    <HeaderStyle HorizontalAlign="Center" Width="15%"></HeaderStyle>

                    <ItemStyle HorizontalAlign="Center" />

                </telerik:GridTemplateColumn>

            </Columns>

            <PagerStyle NextPageText="Trang sau" PrevPageText="Trang Trước" Mode="NumericPages" />

        </MasterTableView>

            <ClientSettings EnablePostBackOnRowClick="true" EnableRowHoverStyle="true" KeyboardNavigationSettings-AllowActiveRowCycle="true">

            <Selecting AllowRowSelect="True" />

            <KeyboardNavigationSettings AllowActiveRowCycle="True"></KeyboardNavigationSettings>

            </ClientSettings>

        </telerik:RadGrid>

       </td>

    </tr>

</table>

File .cs

using System;

using System.Collections;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.SessionState;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

using System.Web.Caching;

using IPC.Bussiness;

using IPC.Utils;

using IPC.DataHelper;

using Telerik.Web.UI;

namespace IPC_WORKS.UI.UserControl

{

    public partial class ManagerWorks : System.Web.UI.UserControl

    {

        #region biến toàn cục

        protected string bkey;

        public bool iKey = false;

        public static int LastId = 0;//lastid

        protected decimal WF_Code

        {

            get { return Convert.ToDecimal(ViewState["WF_Code"]); }

            set { ViewState["WF_Code"] = value; }

        }

        #endregion

        #region khởi tạo dữ liệu

        protected void Page_Load(object sender, EventArgs e)

        {

            int startRow = (RadGrid_Works.CurrentPageIndex * RadGrid_Works.PageSize);

            LoadGrid("", 0);

            if (!Page.IsPostBack){

                LoadCombo();

                FillFirstData();

                try{RadGrid_Works.MasterTableView.Items[startRow].Selected = true;}

                catch (Exception){throw new Exception("Khong co so lieu");}

            }

        }

        #endregion

        #region xử lý dữ liệu form đăng ký công việc

        private void LoadGrid(string sSQLSearch, int iCheck)

        {

            BindData();

        }

        private void BindData()

        {

            DataTable dt = WorkController.Gets();

            if (dt != null)

            {

                RadGrid_Works.DataSource = dt;

                RadGrid_Works.DataBind();

                RadGrid_Works.AutoGenerateColumns = false;

                try{

                    for (int i = 0; i < RadGrid_Works.PageCount; i++){

                        if (iKey)

                        {

                            RadGrid_Works.Items[RadGrid_Works.Items.Count - 1].Selected = true;

                        }

                    }

                }

                catch { }

            }

        }

        /// <summary>

        /// insert if id = 0  or update if id!=0

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        protected void btnOK_Click(object sender, EventArgs e)

        {

            if (WF_Code == 0)

            {

                WorkController.InsertObj(GetObjectData());

                iKey = true;

            }

            else

            {

                WorkController.UpdateObj(GetObjectData());

                iKey = false;

            }

            ClearForm();

            WF_Code = 0;

            BindData();

        }

        private void ClearForm()

        {

            WF_Code = 0;

            txtWF_TittleName.Focus();

            txtWF_TittleName.Text = "";

            txtWF_Quote.Text = "";

            txtWF_Quote.Text = "";

            RdpCreateDate.SelectedDate = DateTime.Today;

            RdpEndDate.SelectedDate = DateTime.Today;

            RdpStartDate.SelectedDate = DateTime.Today;

            txtRadLevelCode.SelectedIndex = 0;

            txtRadTypeCode.SelectedIndex = 0;

        }

        private void LoadCombo()

        {

            txtRadTypeCode.DataSource = WF_Type_Controller.Gets();

            txtRadTypeCode.DataBind();

            txtRadLevelCode.DataSource = LevelController.Gets();

            txtRadLevelCode.DataBind();

        }

        private WF_WorksInfo GetObjectData()

        {

            WF_WorksInfo objWorks = new WF_WorksInfo();

            if(WF_Code != 0)

            {

                objWorks.WF_Code = WF_Code;

            }

            else{

                objWorks.WF_Code = CommonSQL.GetLatestID("tbl_WF_WORKS","WF_Code")+1;

               

            }

            objWorks.WF_TitleName = CommonLib.PreventSQLInjection(txtWF_TittleName.Text.ToString());

            if (RdpCreateDate.SelectedDate != null)

                objWorks.WF_CreateDate = Convert.ToDateTime(RdpCreateDate.SelectedDate);

            else

                objWorks.WF_CreateDate = DateTime.Today;

            if (RdpStartDate.SelectedDate != null)

                objWorks.WF_StartDate = Convert.ToDateTime(RdpStartDate.SelectedDate);

            else

                objWorks.WF_StartDate = DateTime.Today;

            if (RdpEndDate.SelectedDate != null)

                objWorks.WF_EndDate = Convert.ToDateTime(RdpEndDate.SelectedDate);

            else

                objWorks.WF_EndDate = DateTime.Today;

            objWorks.WF_Quote = CommonLib.PreventSQLInjection(txtWF_Quote.Text.ToString());

            if (txtRadLevelCode.SelectedValue != "")

            objWorks.LEVEL_Code = Convert.ToDecimal(txtRadLevelCode.SelectedValue);

            if (txtRadTypeCode.SelectedValue != "")

            objWorks.TYPE_Code = Convert.ToDecimal(txtRadTypeCode.SelectedValue);

            return objWorks;

        }

       

        protected void RadGrid_Works_ItemCommand(object source, GridCommandEventArgs e)

        {

            WF_WorksInfo objWork = new WF_WorksInfo();

            if (e.CommandName == "RowClick" && e.Item is GridDataItem){

                LastId = e.Item.ItemIndex;//LastId indexItem

                e.Item.Selected = true;

                WF_Code = Convert.ToDecimal(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["WF_Code"].ToString());

                FillObjControl();

            }

        }

        protected void RadGrid_Works_PageIndexChanged(object source, GridPageChangedEventArgs e)

        {

            RadGrid_Works.CurrentPageIndex = e.NewPageIndex;

            RadGrid_Works.DataBind();

        }

        protected void RadGrid_Works_ItemDataBound(object sender, GridItemEventArgs e)

        {

            int currentPageIndex = (RadGrid_Works.Items.Count/RadGrid_Works.PageSize);

            if(e.Item.ItemType != GridItemType.Header && e.Item.ItemType != GridItemType.Footer)

            {

                if (e.Item is GridDataItem)

                {

                    GridDataItem item = (GridDataItem)e.Item;

                    string id = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["WF_Code"].ToString();

                    if (id == WF_Code.ToString())

                        e.Item.Selected = true;

                    try

                    {

                        for (int i = 0; i < RadGrid_Works.PageCount; i++)

                        {

                            if (iKey)

                            {

                                RadGrid_Works.Items[RadGrid_Works.Items.Count - 1].Selected = true;

                            }

                            else

                                if (LastId != 0)

                                {

                                    RadGrid_Works.Items[LastId].Selected = true;

                                }

                        }

                    }

                    catch { }

                    for (int i = 0; i <= RadGrid_Works.PageCount; i++)

                    {

                        Label lbl = (Label)item.FindControl("lblStt");//accessing Label stt

                        if (null != lbl)

                        {

                            lbl.Text = Convert.ToString(e.Item.ItemIndex+ 1);

                        }

                    }

                }

            }

        }

        private void FillObjControl()

        {

            WF_WorksInfo objWork = WorkController.Get(Convert.ToDecimal(WF_Code));

            if (objWork != null)

            {

                txtWF_TittleName.Focus();

                txtWF_TittleName.Text = objWork.WF_TitleName;

                txtWF_Quote.Text = objWork.WF_Quote;

                RdpCreateDate.SelectedDate = objWork.WF_CreateDate;

                RdpStartDate.SelectedDate = objWork.WF_StartDate;

                RdpEndDate.SelectedDate = objWork.WF_EndDate;

                LevelInfo objLevel = LevelController.Get(Convert.ToDecimal(Session["Level_Code"]));

                if (objLevel != null)

                {

                    DataTable dtLevel;

                    txtRadLevelCode.SelectedValue = objWork.LEVEL_Code.ToString();

                    if (objLevel.Level_Name.ToString() == "")

                    {

                        dtLevel = LevelController.Gets();

                        txtRadLevelCode.DataTextField = "Level_Name";

                        txtRadLevelCode.DataValueField = "Level_Code";

                    }

                }

                WF_Type_Info objType = WF_Type_Controller.Get(Convert.ToDecimal(Session["TYPE_Code"]));

                if (objType != null)

                {

                    DataTable dtType;

                    txtRadTypeCode.SelectedValue = objWork.TYPE_Code.ToString();

                    if (objType.Type_Name.ToString() == "")

                    {

                        dtType = WF_Type_Controller.Gets();

                        txtRadTypeCode.DataTextField = "Type_Name";

                        txtRadTypeCode.DataValueField = "Type_Code";

                    }

                }

            }

        }

        protected void btnDel_Click(object sender, EventArgs e)

        {

            if (WF_Code != 0)

                WorkController.DeleteIndex(WF_Code);

            BindData();

        }

        private void FillFirstData()

        {

            DataTable dt = WorkController.GetTop1();

            if (dt != null)

            {

                WF_Code = decimal.Parse(dt.Rows[0][0].ToString());

                if (WF_Code != 0)

                    FillObjControl();

            }

        }

        protected void btnNew_Click(object sender, EventArgs e)

        {

            ClearForm();

        }

        #endregion

    }

}


1 Answer, 1 is accepted

Sort by
0
Pavlina
Telerik team
answered on 21 Apr 2011, 09:34 AM
Hi Khanh,

Please refer to the help article below for more information about how to make a grid row selected in each stage of the grid lifecycle.
http://www.telerik.com/help/aspnet/grid/grdselectedrowatalltimes.html

Give it a try and let me know if it helps to achieve the desired functionality.

All the best,
Pavlina
the Telerik team

Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

Tags
Grid
Asked by
Khanh
Top achievements
Rank 1
Answers by
Pavlina
Telerik team
Share this question
or