[CLOSED] Problem with selecting values in gridpanel.
Hi, sorry for bothering you again.
I'm having another problem, now with a GridPanel.
I'm trying to get the selected rows from a grid panel, and also to set the selected values.
This is a test page i made, i hope you can reproduce the problem too:
Code:
<%@ Page Language="C#" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<script runat="server">
public partial class Test : System.Web.UI.Page
{
private List<string> _selectedValues = new List<string>();
protected void Page_Load(object sender, EventArgs e)
{
ImageButton1.DirectClick += new ComponentDirectEvent.DirectEventHandler(ImageButton1_DirectClick);
btnSelect.DirectClick += new ComponentDirectEvent.DirectEventHandler(btnSelect_DirectClick);
btnGetSelected.DirectClick += new ComponentDirectEvent.DirectEventHandler(btnGetSelected_DirectClick);
ConfigureGrid();
}
void btnGetSelected_DirectClick(object sender, DirectEventArgs e)
{
UpdateSelectedValues();
NotificationConfig notificationConfig = new NotificationConfig
{
Title = "Selected Values",
ShowMode = ShowMode.Grid,
ShowPin = false,
Html = string.Format("<span>{0} rows selected</span>", SelectedValues.Count),
};
Ext.Net.Notification.Show(notificationConfig);
}
void btnSelect_DirectClick(object sender, DirectEventArgs e)
{
SelectedValues = new List<string>() { "1", "3", "4" };
FillGrid();
}
void ImageButton1_DirectClick(object sender, DirectEventArgs e)
{
FillGrid();
}
private RowSelectionModel UpdateSelectedValues()
{
RowSelectionModel sm = grdGenerica.GetSelectionModel() as RowSelectionModel;
sm.SelectedRows.Select(row => row.RecordID).ToList();
return sm;
}
List<string> SelectedValues
{
get
{
return _selectedValues;
}
set
{
_selectedValues = value;
}
}
protected void storeGenerico_RefreshData(object sender, StoreRefreshDataEventArgs e)
{
FillGrid();
}
protected void FillGrid()
{
storeGenerico.DataSource = GetData();
storeGenerico.DataBind();
RowSelectionModel selectionModel = (grdGenerica.SelectionModel.First() as RowSelectionModel);
if (X.IsAjaxRequest)
{
selectionModel.SelectedRows.AddRange(SelectedValues.ConvertAll(val => new SelectedRow(val) { AutoDataBind = true }));
}
else
{
selectionModel.SelectById(SelectedValues.ToArray());
}
if (X.IsAjaxRequest)
{
grdGenerica.Update();
}
}
private List<TestObject> GetData()
{
return new List<TestObject>() {
new TestObject() { Id="1", Name="Test A" },
new TestObject() { Id="2", Name="Test B" },
new TestObject() { Id="3", Name="Test C" },
new TestObject() { Id="4", Name="Test D" },
new TestObject() { Id="5", Name="Test E" },
new TestObject() { Id="6", Name="Test F" },
new TestObject() { Id="7", Name="Test G" },
new TestObject() { Id="8", Name="Test H" },
};
}
private void ConfigureGrid()
{
grdGenerica.SelectionModel.Clear();
grdGenerica.SelectionModel.Add(new CheckboxSelectionModel());
List<RecordField> fields = new List<RecordField>()
{
new RecordField("Id"),
new RecordField("Name")
};
foreach (RecordField field in fields)
{
if (!X.IsAjaxRequest)
{
storeGenerico.Reader.Reader.Fields.Add(field);
}
else
{
storeGenerico.AddField(field);
}
}
//grdGenerica.AutoExpandColumn = "Name";
grdGenerica.Title = Title;
}
class TestObject
{
public string Id { get; set; }
public string Name { get; set; }
}
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
</head>
<body>
<form id="form1" runat="server">
<ext:resourcemanager id="ResourceManager1" theme="Gray" runat="server" debugconsole="Ext">
</ext:resourcemanager>
<ext:button id="ImageButton1" runat="server" width="140" stylespec="margin:auto;" text="Load Grid"> </ext:button>
<ext:button id="btnSelect" runat="server" width="140" stylespec="margin:auto;" text="Select Values"> </ext:button>
<ext:button id="btnGetSelected" runat="server" width="140" stylespec="margin:auto;" text="Get Selected Values"> </ext:button>
<ext:gridpanel id="grdGenerica" runat="server" cls="x-grid-custom" header="false"
border="true" striperows="true" trackmouseover="true" autoheight="true">
<TopBar>
</TopBar>
<Store>
<ext:Store ID="storeGenerico" runat="server" OnRefreshData="storeGenerico_RefreshData">
<DirectEventConfig IsUpload="true" />
<Reader>
<ext:JsonReader />
</Reader>
</ext:Store>
</Store>
<SelectionModel>
<ext:RowSelectionModel ID="RowSelectionModel1" runat="server" SingleSelect="true" />
</SelectionModel>
<LoadMask Msg="Cargando datos..." ShowMask="true" />
</ext:gridpanel>
</form>
</body>
</html>