Greetings,
I have a user control with a RadGrid that I am using for data entry. I used the examples in the following older posts, and it works, but I am experiencing severe performance issues when the grid grows to about 40 lines
http://www.telerik.com/forums/how-to-add-amp-delete-dynamic-rows-in-radgrid
http://www.telerik.com/forums/dynamically-add-new-rows-to-radgrid
Is there a better way to accomplish multi-line data entry? I am willing to go a different direction or use a different control if necessary. Here is my current code...
Any suggestions for improvement would be greatly appreciated!
Matt
I have a user control with a RadGrid that I am using for data entry. I used the examples in the following older posts, and it works, but I am experiencing severe performance issues when the grid grows to about 40 lines
http://www.telerik.com/forums/how-to-add-amp-delete-dynamic-rows-in-radgrid
http://www.telerik.com/forums/dynamically-add-new-rows-to-radgrid
Is there a better way to accomplish multi-line data entry? I am willing to go a different direction or use a different control if necessary. Here is my current code...
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="InputFormFundsBreakdown.ascx.cs"
Inherits="Controls_InputFormFundsBreakdown" %>
<
table
align
=
"left"
cellpadding
=
"5"
width
=
"100%"
>
<
tr
>
<
td
align
=
"center"
colspan
=
"2"
>
<
h3
>
Funds Breakdown
<
asp:Image
ID
=
"imgFundsHelp"
runat
=
"server"
ImageUrl
=
"~/Images/help.png"
/>
<
telerik:RadToolTip
ID
=
"tipFundsHelp"
runat
=
"server"
HideEvent
=
"LeaveTargetAndToolTip"
Position
=
"TopRight"
TargetControlID
=
"imgFundsHelp"
>
Help goes here
</
telerik:RadToolTip
>
</
h3
>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"2"
>
<
asp:Label
ID
=
"errFundsMessage"
runat
=
"server"
ForeColor
=
"Red"
></
asp:Label
>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"2"
>
<
telerik:RadGrid
ID
=
"grdFunds"
runat
=
"server"
AutoGenerateColumns
=
"False"
OnDataBound
=
"grdFunds_DataBound"
OnNeedDataSource
=
"grdFunds_NeedDataSource"
>
<
MasterTableView
DataKeyNames
=
"RowNumber"
AlternatingItemStyle-BackColor
=
"#DAE2E8"
>
<
ItemStyle
VerticalAlign
=
"Top"
/>
<
Columns
>
<
telerik:GridTemplateColumn
HeaderText
=
"Fund Name"
>
<
ItemTemplate
>
<
telerik:RadTextBox
ID
=
"txtFundName"
runat
=
"server"
MaxLength
=
"100"
Width
=
"85px"
Text='<%# Eval("FundName")%>'>
</
telerik:RadTextBox
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"* Fund Number"
>
<
ItemTemplate
>
<
telerik:RadTextBox
ID
=
"txtFundNumber"
runat
=
"server"
Width
=
"85px"
MaxLength
=
"100"
Text='<%# Eval("FundNumber")%>'>
<
ClientEvents
OnKeyPress
=
"NumericOnly"
/>
</
telerik:RadTextBox
>
<
br
/>
<
asp:Label
ID
=
"errFundNumber"
runat
=
"server"
ForeColor
=
"Red"
></
asp:Label
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"* Account"
>
<
ItemTemplate
>
<
telerik:RadTextBox
ID
=
"txtAccount"
runat
=
"server"
Width
=
"85px"
MaxLength
=
"100"
Text='<%# Eval("Account")%>'>
</
telerik:RadTextBox
>
<
br
/>
<
asp:Label
ID
=
"errAccount"
runat
=
"server"
ForeColor
=
"Red"
></
asp:Label
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Subledger"
>
<
ItemTemplate
>
<
telerik:RadTextBox
ID
=
"txtSubledger"
runat
=
"server"
Width
=
"85px"
MaxLength
=
"100"
Text='<%# Eval("Subledger")%>'>
<
ClientEvents
OnKeyPress
=
"NumericOnly"
/>
</
telerik:RadTextBox
>
<
br
/>
<
asp:Label
ID
=
"errSubledger"
runat
=
"server"
ForeColor
=
"Red"
></
asp:Label
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"T Code"
>
<
ItemTemplate
>
<
asp:HiddenField
ID
=
"hdnTCode"
runat
=
"server"
Value='<%# Eval("TCode")%>' />
<
telerik:RadDropDownList
ID
=
"ddlTCode"
runat
=
"server"
Width
=
"40px"
>
<
Items
>
<
telerik:DropDownListItem
Value
=
""
Text
=
" "
/>
<
telerik:DropDownListItem
Value
=
"W"
Text
=
"W"
/>
<
telerik:DropDownListItem
Value
=
"A"
Text
=
"A"
/>
</
Items
>
</
telerik:RadDropDownList
>
<
br
/>
<
asp:Label
ID
=
"errTCode"
runat
=
"server"
ForeColor
=
"Red"
></
asp:Label
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"* Amount"
>
<
ItemTemplate
>
<
telerik:RadNumericTextBox
ID
=
"txtFundAmount"
runat
=
"server"
DataType
=
"System.Decimal"
Width
=
"85px"
MaxLength
=
"100"
NumberFormat-DecimalDigits
=
"2"
Type
=
"Currency"
DbValue='<%# Eval("Amount")%>'
IncrementSettings-InterceptMouseWheel="False">
</
telerik:RadNumericTextBox
><
br
/>
<
asp:Label
ID
=
"errFundAmount"
runat
=
"server"
ForeColor
=
"Red"
></
asp:Label
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Memo"
>
<
ItemTemplate
>
<
telerik:RadTextBox
ID
=
"txtFundMemo"
runat
=
"server"
Width
=
"145px"
Text='<%# Eval("Memo")%>'>
</
telerik:RadTextBox
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
>
<
ItemTemplate
>
<
telerik:RadButton
ID
=
"btnDeleteFundLine"
runat
=
"server"
Text
=
"Delete"
CssClass
=
"classDeleteImage"
HoveredCssClass
=
"classDeleteHoveredImage"
PressedCssClass
=
"classDeletePressedImage"
OnCommand
=
"btnDeleteFundLine_Command"
CommandArgument='<%# Eval("RowNumber")%>'>
<
Image
EnableImageButton
=
"true"
/>
</
telerik:RadButton
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"2"
>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
telerik:RadNumericTextBox
ID
=
"txtNumberOfRows"
runat
=
"server"
Width
=
"50px"
MinValue
=
"1"
ShowSpinButtons
=
"true"
DataType
=
"System.Int32"
NumberFormat-DecimalDigits
=
"0"
Value
=
"1"
>
</
telerik:RadNumericTextBox
>
<
telerik:RadButton
ID
=
"btnAddFundRow"
runat
=
"server"
Font-Bold
=
"True"
Icon-PrimaryIconCssClass
=
"rbAdd"
Text
=
"Add Rows"
OnClick
=
"btnAddFundRow_Click"
>
</
telerik:RadButton
>
</
td
>
<
td
align
=
"right"
>
<
asp:Label
ID
=
"lblFundsTotal"
runat
=
"server"
Font-Bold
=
"true"
></
asp:Label
>
<
telerik:RadButton
ID
=
"btnCalculateFunds"
runat
=
"server"
Font-Bold
=
"True"
Text
=
"Calculate"
Icon-PrimaryIconUrl
=
"~/Images/calc.jpg"
OnClick
=
"btnCalculateFunds_Click"
>
</
telerik:RadButton
>
</
td
>
</
tr
>
</
table
>
using
System;
using
System.Data;
using
System.Web.UI.WebControls;
using
Telerik.Web.UI;
using
dsCashTransmittalTableAdapters;
public
partial
class
Controls_InputFormFundsBreakdown : System.Web.UI.UserControl
{
public
DataTable FundsTable
{
get
;
private
set
;
}
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(ViewState[
"FundsTable"
] ==
null
)
{
FundsTable = DefineFundsDataTable();
AddFiveRows();
}
else
{
FundsTable = (DataTable)ViewState[
"FundsTable"
];
}
}
public
decimal
CalculateTotal()
{
decimal
totalAmount = 0;
try
{
foreach
(GridDataItem item
in
grdFunds.Items)
{
RadNumericTextBox txtFundAmount = (RadNumericTextBox)item.FindControl(
"txtFundAmount"
);
totalAmount += Convert.ToDecimal(txtFundAmount.Value);
}
}
catch
(Exception)
{
totalAmount = 0;
}
return
totalAmount;
}
public
int
CountEntries()
{
int
cnt = 0;
try
{
foreach
(GridDataItem item
in
grdFunds.Items)
{
RadNumericTextBox txtFundAmount = (RadNumericTextBox)item.FindControl(
"txtFundAmount"
);
if
(txtFundAmount.Value != 0)
{
cnt++;
}
}
}
catch
(Exception)
{
cnt = 0;
}
return
cnt;
}
public
void
ResetValidation()
{
errFundsMessage.Text =
""
;
foreach
(GridDataItem item
in
grdFunds.Items)
{
Label errFundNumber = (Label)item.FindControl(
"errFundNumber"
);
errFundNumber.Text =
""
;
Label errAccount = (Label)item.FindControl(
"errAccount"
);
errAccount.Text =
""
;
Label errSubledger = (Label)item.FindControl(
"errSubledger"
);
errSubledger.Text =
""
;
Label errTCode = (Label)item.FindControl(
"errTCode"
);
errTCode.Text =
""
;
Label errFundAmount = (Label)item.FindControl(
"errFundAmount"
);
errFundAmount.Text =
""
;
}
ShowCalculatedTotals();
}
public
void
ShowCalculatedTotals()
{
lblFundsTotal.Text =
"Total: "
+ CalculateTotal().ToString(
"C"
);
}
public
bool
ValidateForm(
bool
valid,
ref
string
logMsg,
bool
twoFundsRequired,
bool
oneFundRequired)
{
bool
hasFund =
false
;
bool
num =
false
;
bool
acct =
false
;
bool
tcode =
false
;
bool
sub =
false
;
//bool amt = false;
foreach
(GridDataItem item
in
grdFunds.Items)
{
RadTextBox txtFundName = (RadTextBox)item.FindControl(
"txtFundName"
);
RadTextBox txtFundNumber = (RadTextBox)item.FindControl(
"txtFundNumber"
);
Label errFundNumber = (Label)item.FindControl(
"errFundNumber"
);
RadTextBox txtAccount = (RadTextBox)item.FindControl(
"txtAccount"
);
Label errAccount = (Label)item.FindControl(
"errAccount"
);
RadTextBox txtSubledger = (RadTextBox)item.FindControl(
"txtSubledger"
);
Label errSubledger = (Label)item.FindControl(
"errSubledger"
);
RadDropDownList ddlTCode = (RadDropDownList)item.FindControl(
"ddlTCode"
);
Label errTCode = (Label)item.FindControl(
"errTCode"
);
RadNumericTextBox txtFundAmount = (RadNumericTextBox)item.FindControl(
"txtFundAmount"
);
//Label errFundAmount = (Label)item.FindControl("errFundAmount");
RadTextBox txtFundMemo = (RadTextBox)item.FindControl(
"txtFundMemo"
);
if
(txtFundAmount.Text ==
string
.Empty)
{
txtFundAmount.Value = 0;
}
if
(txtFundName.Text !=
string
.Empty ||
txtFundNumber.Text !=
string
.Empty ||
txtAccount.Text !=
string
.Empty ||
txtSubledger.Text !=
string
.Empty ||
ddlTCode.SelectedValue !=
string
.Empty ||
txtFundAmount.Value != 0 ||
txtFundMemo.Text !=
string
.Empty)
{
if
(txtFundAmount.Value == 0)
{
//errFundAmount.Text = "Required";
//amt = true;
//txtFundAmount.Focus();
//valid = false;
}
else
{
hasFund =
true
;
if
(txtSubledger.Text !=
string
.Empty && ddlTCode.SelectedValue ==
string
.Empty)
{
errTCode.Text =
"Required"
;
tcode =
true
;
ddlTCode.Focus();
valid =
false
;
}
else
if
(ddlTCode.SelectedValue !=
string
.Empty && txtSubledger.Text ==
string
.Empty)
{
errSubledger.Text =
"Required"
;
sub =
true
;
txtSubledger.Focus();
valid =
false
;
}
if
(txtAccount.Text ==
string
.Empty)
{
errAccount.Text =
"Required"
;
acct =
true
;
txtAccount.Focus();
valid =
false
;
}
if
(txtFundNumber.Text ==
string
.Empty)
{
errFundNumber.Text =
"Required"
;
num =
true
;
txtFundNumber.Focus();
valid =
false
;
}
}
}
}
if
(!hasFund && oneFundRequired)
{
if
(twoFundsRequired)
{
errFundsMessage.Text =
"Enter at least two funds"
;
logMsg =
"<li><b>At least two Funds</b> is Required</li>"
+ logMsg;
}
else
{
errFundsMessage.Text =
"Enter at least one fund"
;
logMsg =
"<li><b>At least one Fund</b> is Required</li>"
+ logMsg;
}
grdFunds.Focus();
valid =
false
;
}
else
{
//if (amt)
//{
// logMsg = "<li><b>Fund Amount</b> is Required</li>" + logMsg;
//}
if
(tcode)
{
logMsg =
"<li><b>Fund T Code</b> is Required</li>"
+ logMsg;
}
if
(sub)
{
logMsg =
"<li><b>Fund Subledger</b> is Required</li>"
+ logMsg;
}
if
(acct)
{
logMsg =
"<li><b>Fund Account</b> is Required</li>"
+ logMsg;
}
if
(num)
{
logMsg =
"<li><b>Fund Number</b> is Required</li>"
+ logMsg;
}
UpdateFundTableFromGrid();
}
return
valid;
}
public
void
AddGridErrorMessage(
string
msg)
{
errFundsMessage.Text = msg;
}
public
void
ResetForm()
{
//FundsTable = DefineFundsDataTable();
//BindFundGrid();
ShowCalculatedTotals();
}
public
void
LoadForm(CTCommonRequests req)
{
FundsTable = LoadFundsDataSource(req.GetCTFundsBreakdown());
AddFiveRows();
FillFundFields();
ShowCalculatedTotals();
}
public
void
LoadTemplate(
int
templateID)
{
TemplateFunds_vTableAdapter taFund =
new
TemplateFunds_vTableAdapter();
FundsTable = LoadFundsTemplateDataSource(taFund.GetDataByTemplateID(templateID));
AddFiveRows();
FillFundFields();
ShowCalculatedTotals();
}
public
void
UpdateFundTableFromGrid()
{
FundsTable = DefineFundsDataTable();
foreach
(GridDataItem item
in
grdFunds.Items)
{
RadNumericTextBox txtFundAmount = (RadNumericTextBox)item.FindControl(
"txtFundAmount"
);
if
(Convert.ToDecimal(txtFundAmount.Value) != 0)
{
DataRow row = FundsTable.NewRow();
row[
"RowNumber"
] = item.GetDataKeyValue(
"RowNumber"
).ToString();
RadTextBox txtFundName = (RadTextBox)item.FindControl(
"txtFundName"
);
row[
"FundName"
] = txtFundName.Text;
RadTextBox txtFundNumber = (RadTextBox)item.FindControl(
"txtFundNumber"
);
row[
"FundNumber"
] = txtFundNumber.Text;
RadTextBox txtAccount = (RadTextBox)item.FindControl(
"txtAccount"
);
row[
"Account"
] = txtAccount.Text;
RadTextBox txtSubledger = (RadTextBox)item.FindControl(
"txtSubledger"
);
row[
"Subledger"
] = txtSubledger.Text;
RadDropDownList ddlTCode = (RadDropDownList)item.FindControl(
"ddlTCode"
);
row[
"TCode"
] = ddlTCode.SelectedValue;
row[
"Amount"
] = Convert.ToDecimal(txtFundAmount.Value);
RadTextBox txtFundMemo = (RadTextBox)item.FindControl(
"txtFundMemo"
);
row[
"Memo"
] = txtFundMemo.Text;
FundsTable.Rows.Add(row);
}
}
}
public
void
UpdateTemplateFundTableFromGrid()
{
FundsTable = DefineFundsDataTable();
foreach
(GridDataItem item
in
grdFunds.Items)
{
RadTextBox txtFundName = (RadTextBox)item.FindControl(
"txtFundName"
);
RadTextBox txtFundNumber = (RadTextBox)item.FindControl(
"txtFundNumber"
);
RadTextBox txtAccount = (RadTextBox)item.FindControl(
"txtAccount"
);
RadTextBox txtSubledger = (RadTextBox)item.FindControl(
"txtSubledger"
);
RadDropDownList ddlTCode = (RadDropDownList)item.FindControl(
"ddlTCode"
);
RadNumericTextBox txtFundAmount = (RadNumericTextBox)item.FindControl(
"txtFundAmount"
);
RadTextBox txtFundMemo = (RadTextBox)item.FindControl(
"txtFundMemo"
);
if
(txtFundName.Text.Trim() !=
string
.Empty ||
txtFundNumber.Text.Trim() !=
string
.Empty ||
txtAccount.Text.Trim() !=
string
.Empty ||
txtSubledger.Text.Trim() !=
string
.Empty ||
(ddlTCode.SelectedIndex > -1 && ddlTCode.SelectedValue !=
""
) ||
txtFundMemo.Text.Trim() !=
string
.Empty)
{
DataRow row = FundsTable.NewRow();
row[
"RowNumber"
] = item.GetDataKeyValue(
"RowNumber"
).ToString();
row[
"FundName"
] = txtFundName.Text;
row[
"FundNumber"
] = txtFundNumber.Text;
row[
"Account"
] = txtAccount.Text;
row[
"Subledger"
] = txtSubledger.Text;
row[
"TCode"
] = ddlTCode.SelectedValue;
row[
"Amount"
] = Convert.ToDecimal(txtFundAmount.Value);
row[
"Memo"
] = txtFundMemo.Text;
FundsTable.Rows.Add(row);
}
}
}
protected
void
grdFunds_DataBound(
object
sender, EventArgs e)
{
ShowCalculatedTotals();
}
protected
void
btnAddFundRow_Click(
object
sender, EventArgs e)
{
ResetValidation();
FundsTable = DefineFundsDataTable();
foreach
(GridDataItem item
in
grdFunds.Items)
{
DataRow row = FundsTable.NewRow();
row[
"RowNumber"
] = item.GetDataKeyValue(
"RowNumber"
).ToString();
RadTextBox txtFundName = (RadTextBox)item.FindControl(
"txtFundName"
);
row[
"FundName"
] = txtFundName.Text;
RadTextBox txtFundNumber = (RadTextBox)item.FindControl(
"txtFundNumber"
);
row[
"FundNumber"
] = txtFundNumber.Text;
RadTextBox txtAccount = (RadTextBox)item.FindControl(
"txtAccount"
);
row[
"Account"
] = txtAccount.Text;
RadTextBox txtSubledger = (RadTextBox)item.FindControl(
"txtSubledger"
);
row[
"Subledger"
] = txtSubledger.Text;
RadDropDownList ddlTCode = (RadDropDownList)item.FindControl(
"ddlTCode"
);
row[
"TCode"
] = ddlTCode.SelectedValue;
RadNumericTextBox txtFundAmount = (RadNumericTextBox)item.FindControl(
"txtFundAmount"
);
row[
"Amount"
] = Convert.ToDecimal(txtFundAmount.Value);
RadTextBox txtFundMemo = (RadTextBox)item.FindControl(
"txtFundMemo"
);
row[
"Memo"
] = txtFundMemo.Text;
FundsTable.Rows.Add(row);
}
for
(
int
x = 0; x < txtNumberOfRows.Value; x++)
{
FundsTable = AddFundsRow(FundsTable);
}
grdFunds.Rebind();
FillFundFields();
}
protected
void
btnDeleteFundLine_Command(
object
sender, CommandEventArgs e)
{
int
rowNumber = Convert.ToInt32(e.CommandArgument);
ResetValidation();
FundsTable = DefineFundsDataTable();
foreach
(GridDataItem item
in
grdFunds.Items)
{
DataRow row = FundsTable.NewRow();
row[
"RowNumber"
] = item.GetDataKeyValue(
"RowNumber"
).ToString();
RadTextBox txtFundName = (RadTextBox)item.FindControl(
"txtFundName"
);
row[
"FundName"
] = txtFundName.Text;
RadTextBox txtFundNumber = (RadTextBox)item.FindControl(
"txtFundNumber"
);
row[
"FundNumber"
] = txtFundNumber.Text;
RadTextBox txtAccount = (RadTextBox)item.FindControl(
"txtAccount"
);
row[
"Account"
] = txtAccount.Text;
RadTextBox txtSubledger = (RadTextBox)item.FindControl(
"txtSubledger"
);
row[
"Subledger"
] = txtSubledger.Text;
RadDropDownList ddlTCode = (RadDropDownList)item.FindControl(
"ddlTCode"
);
row[
"TCode"
] = ddlTCode.SelectedValue;
RadNumericTextBox txtFundAmount = (RadNumericTextBox)item.FindControl(
"txtFundAmount"
);
row[
"Amount"
] = Convert.ToDecimal(txtFundAmount.Value);
RadTextBox txtFundMemo = (RadTextBox)item.FindControl(
"txtFundMemo"
);
row[
"Memo"
] = txtFundMemo.Text;
FundsTable.Rows.Add(row);
}
FundsTable = DeleteFundsRow(FundsTable, rowNumber);
//grdFunds.DataSource = FundsTable;
grdFunds.Rebind();
//foreach (GridDataItem item in grdFunds.Items)
//{
// HiddenField hdnTCode = (HiddenField)item.FindControl("hdnTCode");
// RadDropDownList ddlTCode = (RadDropDownList)item.FindControl("ddlTCode");
// ddlTCode.SelectedValue = hdnTCode.Value;
//}
FillFundFields();
}
protected
void
btnCalculateFunds_Click(
object
sender, EventArgs e)
{
lblFundsTotal.Text =
"Total: "
+ CalculateTotal().ToString(
"C"
);
}
private
void
AddFiveRows()
{
for
(
int
x = 1; x < 6; x++)
{
FundsTable = AddFundsRow(FundsTable);
}
//grdFunds.DataSource = FundsTable;
grdFunds.Rebind();
}
private
DataTable DefineFundsDataTable()
{
DataTable dt =
new
DataTable(
"FundsBreakdown"
);
DataColumn dc =
new
DataColumn(
"RowNumber"
);
dc.DataType = Type.GetType(
"System.Int32"
);
dt.Columns.Add(dc);
dc =
new
DataColumn(
"FundName"
);
dc.DataType = Type.GetType(
"System.String"
);
dt.Columns.Add(dc);
dc =
new
DataColumn(
"FundNumber"
);
dc.DataType = Type.GetType(
"System.String"
);
dt.Columns.Add(dc);
dc =
new
DataColumn(
"Account"
);
dc.DataType = Type.GetType(
"System.String"
);
dt.Columns.Add(dc);
dc =
new
DataColumn(
"Subledger"
);
dc.DataType = Type.GetType(
"System.String"
);
dt.Columns.Add(dc);
dc =
new
DataColumn(
"TCode"
);
dc.DataType = Type.GetType(
"System.String"
);
dt.Columns.Add(dc);
dc =
new
DataColumn(
"Amount"
);
dc.DataType = Type.GetType(
"System.Decimal"
);
dt.Columns.Add(dc);
dc =
new
DataColumn(
"Memo"
);
dc.DataType = Type.GetType(
"System.String"
);
dt.Columns.Add(dc);
return
dt;
}
private
DataTable AddFundsRow(DataTable dt)
{
DataRow row = dt.NewRow();
row[
"RowNumber"
] = dt.Rows.Count + 1;
row[
"FundName"
] =
""
;
row[
"FundNumber"
] =
""
;
row[
"Account"
] =
""
;
row[
"Subledger"
] =
""
;
row[
"TCode"
] =
""
;
row[
"Amount"
] = 0;
row[
"Memo"
] =
""
;
dt.Rows.Add(row);
return
dt;
}
private
DataTable DeleteFundsRow(DataTable dt,
int
deleteRow)
{
DataTable deletedRowTable = DefineFundsDataTable();
foreach
(DataRow sourceRow
in
dt.Rows)
{
if
(Convert.ToInt32(sourceRow[
"RowNumber"
]) != deleteRow)
{
DataRow row = deletedRowTable.NewRow();
row[
"RowNumber"
] = deletedRowTable.Rows.Count + 1;
row[
"FundName"
] = sourceRow[
"FundName"
];
row[
"FundNumber"
] = sourceRow[
"FundNumber"
];
row[
"Account"
] = sourceRow[
"Account"
];
row[
"Subledger"
] = sourceRow[
"Subledger"
];
row[
"TCode"
] = sourceRow[
"TCode"
];
row[
"Amount"
] = sourceRow[
"Amount"
];
row[
"Memo"
] = sourceRow[
"Memo"
];
deletedRowTable.Rows.Add(row);
}
}
return
deletedRowTable;
}
private
DataTable LoadFundsDataSource(DataTable sourceDT)
{
DataTable filledDataTable = DefineFundsDataTable();
foreach
(DataRow sourceRow
in
sourceDT.Rows)
{
DataRow row = filledDataTable.NewRow();
row[
"RowNumber"
] = filledDataTable.Rows.Count + 1;
row[
"FundName"
] = sourceRow[
"FundName"
];
row[
"FundNumber"
] = sourceRow[
"FundNumber"
];
row[
"Account"
] = sourceRow[
"AccountNumber"
];
row[
"Subledger"
] = sourceRow[
"Subledger"
];
row[
"TCode"
] = sourceRow[
"TCode"
];
row[
"Amount"
] = sourceRow[
"FundAmount"
];
row[
"Memo"
] = sourceRow[
"FundMemo"
];
filledDataTable.Rows.Add(row);
}
return
filledDataTable;
}
private
DataTable LoadFundsTemplateDataSource(DataTable sourceDT)
{
DataTable filledDataTable = DefineFundsDataTable();
foreach
(DataRow sourceRow
in
sourceDT.Rows)
{
DataRow row = filledDataTable.NewRow();
row[
"RowNumber"
] = filledDataTable.Rows.Count + 1;
row[
"FundName"
] = sourceRow[
"TemplateFundName"
];
row[
"FundNumber"
] = sourceRow[
"TemplateFundNumber"
];
row[
"Account"
] = sourceRow[
"TemplateAccountNumber"
];
row[
"Subledger"
] = sourceRow[
"TemplateSubledger"
];
row[
"TCode"
] = sourceRow[
"TemplateTCode"
];
row[
"Amount"
] = 0;
row[
"Memo"
] = sourceRow[
"TemplateFundMemo"
];
filledDataTable.Rows.Add(row);
}
return
filledDataTable;
}
private
void
FillFundFields()
{
foreach
(GridDataItem item
in
grdFunds.Items)
{
HiddenField hdnTCode = (HiddenField)item.FindControl(
"hdnTCode"
);
RadDropDownList ddlTCode = (RadDropDownList)item.FindControl(
"ddlTCode"
);
if
(hdnTCode.Value ==
""
)
{
ddlTCode.SelectedIndex = -1;
}
else
{
ddlTCode.SelectedValue = hdnTCode.Value;
}
}
}
protected
void
grdFunds_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
ViewState[
"FundsTable"
] = FundsTable;
grdFunds.DataSource = FundsTable;
}
}
Any suggestions for improvement would be greatly appreciated!
Matt