يختار Telerik Radgrid صفوف متعددة حتى مع تعيين annowmultirolowselection إلى خطأ

StackOverflow https://stackoverflow.com/questions/2209205

  •  18-09-2019
  •  | 
  •  

سؤال

لدي Radgrid الذي يحتوي على صفوف وأعمدة يتم إنشاؤه برمجيا، وهناك Radajaxmanager الذي تم تعيينه لتحديث لوحة أخرى على SelectionIndExchange. يحتوي RADGRID أيضا على تمكين التمرير وتعطيل multirowselect. يعمل Radgrid كما يفترض، ولكن بمجرد التمرير، يبدأ تشغيل العناصر المحددة. لقد قمت بتعيين نقاط استراحة وتم التحقق منها من خلال الساعات التي يحددها SELEVENTITEMS.Count أكبر من ذلك 1. هذا يمنع أيضا من اختيار الصفوف المحددة السابقة بعد التمرير. لقد حاولت مسح العناصر المحددة في الحدث إلغاء تحميل الصفحة، ولكن عندما تقدمها في بعض الأحيان تظهر أكثر من عنصر واحد محدد. أقول أحيانا لأنه لا يتفق مع هذه المشكلة. النمط الوحيد الذي لاحظته هو أن التمرير يبدأ المشكلة.

المشكلة الثانية هي أنه في كل مرة تقوم فيها الصفحة بتشغيل رؤوس الأعمدة تختفي. هذا واحد يحيرني تماما، لست متأكدا ما هو السبب لذلك.

وأود أن أقدر أي نصيحة حول هذا الموضوع. سأقوم بتضمين الرمز الخاص بي كذلك. شكرا، وأتظلم بالتنسيق الفقراء. ما زلت أحاول معرفة ذلك.

ملاحظة: يتم إعداد التعليمات البرمجية التي قمت بتضمينها لإنشاء نص للأعمدة والصفوف، لذلك لا توجد هناك حاجة إلى بيانات فعلية. يمكنك بسهولة نسخ ولصق نفس الرمز لمعرفة ما أشير إليه.

<rad:RadScriptManager ID="scm" runat="server"> </rad:RadScriptManager>

<rad:RadAjaxManager ID="AjaxManager" runat="server">
<AjaxSettings>
<rad:AjaxSetting AjaxControlID="grdCustomerAssignments">
<UpdatedControls>
<rad:AjaxUpdatedControl ControlID="grdCustomerAssignments" LoadingPanelID="pnlLoading1" />
</UpdatedControls>
</rad:AjaxSetting>
<rad:AjaxSetting AjaxControlID="grdCustomerAssignments">
<UpdatedControls>
<rad:AjaxUpdatedControl ControlID="pnlDetails" />
</UpdatedControls>
</rad:AjaxSetting>
</AjaxSettings>
</rad:RadAjaxManager>

<rad:RadGrid ID="grdCustomerAssignments" runat="server" Skin="WebBlue" AutoGenerateColumns="false" AllowMultiRowSelection="false" OnNeedDataSource="grdCustomerAssignments_NeedDataSource" OnSelectedIndexChanged="grdCustomerAssignments_SelectedIndexChanged" OnSortCommand="grdCustomerAssignments_SortCommand">

<ClientSettings EnablePostBackOnRowClick="true" >
<ClientEvents/>
<Scrolling AllowScroll="true" ScrollHeight="350" UseStaticHeaders="true" SaveScrollPosition="true" />
<Selecting AllowRowSelect="true" />
<Resizing AllowColumnResize="true" />
</ClientSettings>

<MasterTableView DataKeyNames="ID" >

<HeaderStyle Wrap="false" HorizontalAlign="Center" VerticalAlign="Middle" Font-Bold="true" />
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Wrap="false" />
<AlternatingItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Wrap="false" />

<NoRecordsTemplate>
<div style="font-size:80%; color:Maroon;">No Items Were Found</div>
</NoRecordsTemplate>

</MasterTableView>

</rad:RadGrid>

<asp:Panel ID="pnlDetails" runat="server">
<rad:RadTabStrip ID="tabStrip" runat="server" Align="Justify" AppendDataBoundItems="false" SelectedIndex="0" MultiPageID="multiPage" Skin="WebBlue">
<Tabs></Tabs>
</rad:RadTabStrip>
<rad:RadMultiPage ID="multiPage" runat="server"></rad:RadMultiPage>
</asp:Panel>

protected DataTable Assignments { get; set; }  
protected Dictionary<string, IList<int>> TabTitles { get; set; }  


protected void Page_Init(object sender, EventArgs e)  
{  
  GetAssignments();  
  if (!IsPostBack)  
    AddColumnsToGrid();  
}  

protected void Page_Load(object sender, EventArgs e)  
{  
  tabStrip.Tabs.Clear();  
  multiPage.Controls.Clear();  
}  

protected void Page_UnLoad(object sender, EventArgs e)  
{  
  grdCustomerAssignments.MasterTableView.ClearSelectedItems();  
}  

protected void grdCustomerAssignments_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)  
{  
  grdCustomerAssignments.DataSource = Assignments;  
}  

protected void grdCustomerAssignments_SelectedIndexChanged(object sender, EventArgs e)  
{  
  try  
  {  
     string id = ((RadGrid)sender).SelectedValue.ToString();  
     DataRow dataRow = null;  
     foreach (DataRow row in Assignments.Rows)  
     {  
       if (row["ID"].ToString() == id)  
         dataRow = row;  
     }  

     PopulateAssignmentDetail(dataRow);  

  }  
  catch (Exception ex)  
  {  

  }  
}  

protected void PopulateAssignmentDetail(DataRow datarow)  
{  
  // just some code to populate the tabs.  
}  

protected void AddColumnsToGrid()  
{  
   grdCustomerAssignments.MasterTableView.Columns.Clear();  

  for (int i = 1; i < 7; i++)  
  {  
     DataColumn column = Assignments.Columns[i];  
     GridBoundColumn boundColumn = new GridBoundColumn();  
     boundColumn.HeaderText = column.Caption;  
     boundColumn.DataField = column.ColumnName;  
     grdCustomerAssignments.MasterTableView.Columns.Add(boundColumn);  
  }  
}  

private void GetAssignments()  
{  
if (Assignments == null)  
Assignments = new DataTable();  
if (TabTitles == null)  
TabTitles = new Dictionary<string, IList<int>>();  
try  
{  
Assignments.Columns.Add(new DataColumn("ID"));  
for (int i = 0; i < 50; i++)  
{  
Assignments.Columns.Add(new DataColumn("Column" + i.ToString()));  
}  
int columnIndex = 0;  
int tabIndex = 0;  
foreach (DataColumn column in Assignments.Columns)  
{  
if (columnIndex > 5)  
{  
string fieldCategory = "tab" + tabIndex.ToString();  
if (tabIndex == 4)  
tabIndex = 0;  
else  
tabIndex++;  
if (!TabTitles.ContainsKey(fieldCategory))  
{  
IList<int> tmp = new List<int>();  
tmp.Add(columnIndex);  
TabTitles.Add(fieldCategory, tmp);  
}  
else  
TabTitles[fieldCategory].Add(columnIndex);  
}  
columnIndex++;  
}  
for (int j = 0; j < 50; j++)  
{  
DataRow row = Assignments.NewRow();  
foreach (DataColumn column in Assignments.Columns)  
{  
row[column.ColumnName] = column.ColumnName + "Row" + j.ToString();  
}  
Assignments.Rows.Add(row);  
}  
Assignments.AcceptChanges();  
Session["Assignments"] = Assignments;  
}  
catch (Exception ex)  
{  

}  
}    
هل كانت مفيدة؟

المحلول

بعد فحص التعليمات البرمجية الخاصة بك لاحظت أنك تولد عمود الشبكة عند INIT عند! page.ispostback. أعرف من اتصال الدعم السابق مع Telerik أنه عندما يكون لديك شبكة ثابتة على الصفحة، يجب عليك بناء الأعمدة على pageload عندما! page.ispostback - أنها وجهني إلى مساعدة الموضوع، والبحث عن ذلك في التعليمات عبر الإنترنت.

أيضا إذا كنت أتذكر جيدا قرأت في الإفراج ملاحظات أن هناك بعض القضية مع التمرير وعناصر مختارة تقريبا. يجب إصلاحه في أحدث إصدار SP2 Q3 2009.

ديك.

نصائح أخرى

(آسف لا أستطيع المساعدة، ولكن) لماذا لا تنشر إلى منتديات التيليريك أو إنشاء أ بطاقة الدعمب عادة سوف تحصل على إجابة في غضون 24 ساعة.

هذا رمز زر قد يساعدك هذا الرمز في حذف رقم قياسي متعدد خانات الاختيار الذي حددته في RADGRID الخاص بك.

 protected void Button3_Click(object sender, EventArgs e)
            {
                Area_Master Area;
                int i;


            foreach (GridDataItem item in Grd_Area.Items)//loops through each grid row
            {
                CheckBox chkBx = (CheckBox)item.FindControl("chkArea");
                if (chkBx.Checked)
                {
                    i =  Convert.ToInt32(item.Cells[3].Text); //accessing cell using its ColumnUniqueName
                    var query = from obj in cnx.Area_Master where obj.PKAreaID == i select obj;
                    Area = query.FirstOrDefault();
                    cnx.DeleteObject(Area);
                    cnx.SaveChanges();
                }
            }

        }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top