Hi,
I am creating a Grid in code behind which has all cells set to edit option and the save is on the save command.
My Grid is coded as such
And in the Code Behind
What I want to do is have on of the columns in the grid be a radcombobox rather than a simple textbox.
I already have a combo box on the page outside the grid and would like the same combobox (it can be a duplicate of the original one) in each grid row.
The reason I am creating the grid as such is because the user wants all the grid rows to be in edit mode so they dont have to click edit and save for each row, rather they change all the rows or add new ones and click save once.
My radcombox box already on the page is:
I already have columns selected for Account and AccountName as textboxes in the Grid. But I want the Account column to be a dropdown similar to above.
Any help on how to get that going using PreRender.
Thanks,
Ads
I am creating a Grid in code behind which has all cells set to edit option and the save is on the save command.
My Grid is coded as such
<
telerik:RadGrid
ID
=
"RadGrid1"
OnPreRender
=
"RadGrid1_PreRender"
OnDataBinding
=
"RadGrid1_DataBinding"
OnNeedDataSource
=
"RadGrid1_NeedDataSource"
OnItemCommand
=
"RadGrid1_ItemCommand"
Skin
=
"Web20"
runat
=
"server"
GridLines
=
"None"
OnItemCreated
=
"RadGrid1_ItemCreated"
style
=
"top: 190px; left: 10px; position: absolute;"
width
=
"750px"
Height
=
"280px"
>
<
MasterTableView
EditMode
=
"InPlace"
CommandItemDisplay
=
"Top"
DataKeyNames
=
"ID"
AutoGenerateColumns
=
"true"
ShowFooter
=
"True"
>
<
CommandItemTemplate
>
<
div
style
=
"padding: 5px 5px;"
>
<
asp:LinkButton
ID
=
"btnAddNew"
runat
=
"server"
CommandName
=
"AddNewRow"
>
<
img
style
=
"border:0px;vertical-align:middle;"
alt
=
""
src
=
"Images/AddRecord.gif"
/>
Add New Row
</
asp:LinkButton
>
<
asp:LinkButton
ID
=
"btnSave"
runat
=
"server"
CommandName
=
"Save"
>
<
img
style
=
"border:0px;vertical-align:middle;"
alt
=
""
src
=
"Images/save.png"
/>
Save in Database
</
asp:LinkButton
>
</
div
>
</
CommandItemTemplate
>
</
MasterTableView
>
<
ClientSettings
>
<
Scrolling
AllowScroll
=
"true"
ScrollHeight
=
"230"
UseStaticHeaders
=
"true"
/>
</
ClientSettings
>
</
telerik:RadGrid
>
And in the Code Behind
protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)
{
saveDataInDataTable();
switch (e.CommandName)
{
case "InsertNewRow":
{
AddNewRowInDataTable();
//saveDataInDataTable();
string script = "setTimeout( function () { selectedCellId='" + e.CommandArgument.ToString() + "'; MoveDown();},100);";
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "selectCell", script, true);
ViewState["inserted"] = true;
}
break;
case "AddNewRow":
{
AddNewRowInDataTable();
//saveDataInDataTable();
}
break;
case "Save":
{
//saveDataInDataTable();
//UpdateDatabase();
//Session["key"] = 0;
//RadAjaxManager1.Alert("The database was successfully updated");
}
break;
default: break;
}
}
// Add new empty row into DataTable
private void AddNewRowInDataTable()
{
NewRowsCount++;
DataRow row = GridSource.NewRow();
row["ChequeID"] = txtChequeID.Text;
row["AccountNo"] = "";
row["AccountName"] = "";
row["Amount"] = 0;
row["VAT"] = "S";
row["VATAmount"] = 0;
GridSource.Rows.Add(row);
RadGrid1.Rebind();
}
protected void RadGrid1_ItemCreated(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
if (e.Item is GridEditableItem && e.Item.IsInEditMode)
{
TextBox Amount = (e.Item as GridEditableItem)["Amount"].Controls[0] as TextBox;
Amount.AutoPostBack = true;
Amount.TextChanged += new System.EventHandler(this.Amount_TextChanged);
string eventHandler = string.Format("gridTextBoxOnFocus('{0}');", Amount.ClientID);
Amount.Attributes.Add("onFocus", eventHandler);
TextBox AccountNo = (e.Item as GridEditableItem)["AccountNo"].Controls[0] as TextBox;
AccountNo.AutoPostBack = true;
AccountNo.TextChanged += new System.EventHandler(this.AccountNo_TextChanged);
}
}
protected void RadGrid1_PreRender(object sender, EventArgs e)
{
RadGrid1.Attributes.Add("onkeydown", "onKeyDown(this,event);");
int itemsCount = 0;
int columnsCount = 0;
StringBuilder builder = new StringBuilder();
// Attach the event handlers to the client side events of the TextBoxes.
foreach (GridDataItem item in RadGrid1.MasterTableView.Items)
{
if (item is GridDataItem)
{
columnsCount = 0;
for (int i = 2; i <
RadGrid1.MasterTableView.RenderColumns.Length
; i++)
{
GridColumn
column
=
RadGrid1
.MasterTableView.RenderColumns[i];
TextBox textBox = (item[column.UniqueName].Controls[0]) as TextBox;
if (textBox != null)
{
textBox.Attributes.Add("ondblclick", "cellDoubleClickFunction('" + textBox.ClientID + "');");
textBox.Attributes.Add("onclick", "cellClick('" + textBox.ClientID + "');");
}
if ((i == 2) || (i == 3) || (i == 4))
{
textBox.ReadOnly
=
true
;
textBox.Attributes.Add("class", "readOnly");
}
columnsCount++;
}
itemsCount++;
}
}
if (RadGrid1.MasterTableView.Items.Count > 0)
{
RadGrid1.MasterTableView.GetColumn("ID").Visible = false;
RadGrid1.MasterTableView.GetColumn("ChequeID").Visible = false;
RadGrid1.MasterTableView.GetColumn("CustomerID").Visible = false;
}
RadScriptManager.RegisterStartupScript(Page, Page.GetType(), "init", "colls = " + columnsCount + ";rows=" + itemsCount + ";", true);
}
What I want to do is have on of the columns in the grid be a radcombobox rather than a simple textbox.
I already have a combo box on the page outside the grid and would like the same combobox (it can be a duplicate of the original one) in each grid row.
The reason I am creating the grid as such is because the user wants all the grid rows to be in edit mode so they dont have to click edit and save for each row, rather they change all the rows or add new ones and click save once.
My radcombox box already on the page is:
<
telerik:RadComboBox
ID
=
"drpParentAccount"
runat
=
"server"
Height
=
"200px"
Width
=
"240px"
Filter
=
"Contains"
EmptyMessage
=
"Choose Parent Account"
MarkFirstMatch
=
"true"
ChangeTextOnKeyBoardNavigation
=
"false"
DataTextField
=
"Account"
DataValueField
=
"Account"
OnItemDataBound
=
"RadComboBoxParentAccount_ItemDataBound"
EnableLoadOnDemand
=
"true"
OnItemsRequested
=
"RadComboBoxProduct_ItemsRequested"
AutoPostBack
=
"true"
DataSourceID
=
"SqlDataSourceParentAccount"
style
=
"top: 10px; left: 550px; position: absolute;"
>
<
HeaderTemplate
>
<
table
style
=
"width: 240px"
cellspacing
=
"0"
cellpadding
=
"0"
>
<
tr
>
<
td
style
=
"width: 60px;"
>
Number</
td
>
<
td
style
=
"width: 180px;"
>
Namer</
td
>
</
tr
>
</
table
>
</
HeaderTemplate
>
<
ItemTemplate
>
<
table
style
=
"width: 240px"
cellspacing
=
"0"
cellpadding
=
"0"
>
<
tr
>
<
td
style
=
"width: 60px;"
>
<%# DataBinder.Eval(Container.DataItem, "Account") %>
</
td
>
<
td
style
=
"width: 180px;"
>
<%# DataBinder.Eval(Container.DataItem, "AccountName") %>
</
td
>
</
tr
>
</
table
>
</
ItemTemplate
>
</
telerik:RadComboBox
>
I already have columns selected for Account and AccountName as textboxes in the Grid. But I want the Account column to be a dropdown similar to above.
Any help on how to get that going using PreRender.
Thanks,
Ads