I use RadGrid EditForm with UserControl
<telerik:RadGrid ID="personGrid" runat="server" AutoGenerateColumns="False" OnEditCommand="personGrid_EditCommand" OnUpdateCommand="personGrid_UpdateCommand">
<MasterTableView DataKeyNames="ID" CommandItemDisplay="Top">
<EditFormSettings UserControlName="PersonItemsUC.ascx" EditFormType="WebUserControl">
</EditFormSettings>
<Columns>
<telerik:GridBoundColumn UniqueName="ID" Display="false" HeaderText="ID" DataField="ID">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Name" HeaderText="Name" DataField="Name">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Family" HeaderText="Family" DataField="Family">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Age" HeaderText="Age" DataField="Age">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="MobileNo" HeaderText="MobileNo" DataField="MobileNo">
</telerik:GridBoundColumn>
<telerik:GridEditCommandColumn EditText="Update" UniqueName="EditCommandColumn">
</telerik:GridEditCommandColumn>
<telerik:GridButtonColumn UniqueName="DeleteColumn" Text="Delete" CommandName="Delete">
</telerik:GridButtonColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
and I have UserControl like this (have Person Info data) My UC
each row in my grid is equivalent Person class (as my DTO)
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public string Family { get; set; }
public string MobileNo { get; set; }
public int Age { get; set; }
}
so in My usercontrol I have a method like this
public void SetDataToControls(Person entity)
{
txtName.Text = entity.Name;
txtFamily.Text = entity.Family;
txtAge.Text = entity.Age.ToString();
txtMobileNo.Text = entity.MobileNo;
}
get person and set data to corresponding control
for Updating I must show current data into usercontrol
so I think that I use SetDataToControls() into EditCommand method (but can not find UserControl) and pass an instance of Person to UserControl
I have 2 Questions
1. How Get Current Row and Convert in to Person Class ?
2. What is best event for this purpose (Calling SetDataToControls()) EditCommand cannot find UserControl
protected void personGrid_EditCommand(object sender, GridCommandEventArgs e) // What is the best event for this purpose ?
{
var p = new Person() { Age = 23, Name = "HHH", Family = "FFF", MobileNo = "09999" }; // How Convert Row to Person
var uc = e.Item.FindControl(GridEditFormItem.EditFormUserControlID) as PersonItemsUC;
uc.SetDataToControl(p);
}
<telerik:RadGrid ID="personGrid" runat="server" AutoGenerateColumns="False" OnEditCommand="personGrid_EditCommand" OnUpdateCommand="personGrid_UpdateCommand">
<MasterTableView DataKeyNames="ID" CommandItemDisplay="Top">
<EditFormSettings UserControlName="PersonItemsUC.ascx" EditFormType="WebUserControl">
</EditFormSettings>
<Columns>
<telerik:GridBoundColumn UniqueName="ID" Display="false" HeaderText="ID" DataField="ID">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Name" HeaderText="Name" DataField="Name">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Family" HeaderText="Family" DataField="Family">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Age" HeaderText="Age" DataField="Age">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="MobileNo" HeaderText="MobileNo" DataField="MobileNo">
</telerik:GridBoundColumn>
<telerik:GridEditCommandColumn EditText="Update" UniqueName="EditCommandColumn">
</telerik:GridEditCommandColumn>
<telerik:GridButtonColumn UniqueName="DeleteColumn" Text="Delete" CommandName="Delete">
</telerik:GridButtonColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
and I have UserControl like this (have Person Info data) My UC
each row in my grid is equivalent Person class (as my DTO)
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public string Family { get; set; }
public string MobileNo { get; set; }
public int Age { get; set; }
}
so in My usercontrol I have a method like this
public void SetDataToControls(Person entity)
{
txtName.Text = entity.Name;
txtFamily.Text = entity.Family;
txtAge.Text = entity.Age.ToString();
txtMobileNo.Text = entity.MobileNo;
}
get person and set data to corresponding control
for Updating I must show current data into usercontrol
so I think that I use SetDataToControls() into EditCommand method (but can not find UserControl) and pass an instance of Person to UserControl
I have 2 Questions
1. How Get Current Row and Convert in to Person Class ?
2. What is best event for this purpose (Calling SetDataToControls()) EditCommand cannot find UserControl
protected void personGrid_EditCommand(object sender, GridCommandEventArgs e) // What is the best event for this purpose ?
{
var p = new Person() { Age = 23, Name = "HHH", Family = "FFF", MobileNo = "09999" }; // How Convert Row to Person
var uc = e.Item.FindControl(GridEditFormItem.EditFormUserControlID) as PersonItemsUC;
uc.SetDataToControl(p);
}