In this article I
will explain how to fetch / get data from a GridView and how to store it into a
DataTable dynamically using C#.NET in ASP.NET
Fallow the below
steps:
First, we have to create
GridView with required Columns and set its AutoGenerateColumns property to
False. If you required footer then show footer is true otherwise false and same
as paging also.
Design the GridViewas per your reqirements. Use Templates like Item Template, Edit Item Template,
and Footer Templates to Create GridView.
Design:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" ShowFooter="true"
Width="100%" DataKeyNames="MatTransSlNo">
<Columns>
<asp:TemplateField HeaderText="Material" SortExpression="StateID" ItemStyle-Width="35%" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:Label ID="lblMatTransSlNo" runat="server" Text='<%#Eval("MatTransSlNo") %>' Visible="false"></asp:Label>
<asp:Label ID="lblMaterialId" runat="server" Text='<%#Eval("MaterialId") %>' Visible="false"></asp:Label>
<asp:Label ID="lblMaterialIT" runat="server" Text='<%#Eval("MaterialDesc") %>' Width="90%"></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtMaterialFT" runat="server" AutoPostBack="true" OnTextChanged="txtMaterial_OnTextChanged"
Width="90%"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="UOM" SortExpression="StateName" ItemStyle-Width="10%" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:Label ID="txtUOMIT" runat="server" Text='<%#Bind("UOMShortDesc") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="txtUOMFT" runat="server" Width="90%"></asp:Label>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Balance Quantity" SortExpression="Quantity" ItemStyle-Width="10%">
<ItemTemplate>
<asp:TextBox ID="lblQuantityIT" runat="server" Text='<%#Eval("BalQty") %>' Width="90%" MaxLength="9" Enabled="false"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" ID="rfvQuantityIT" ControlToValidate="lblQuantityIT"
Display="Dynamic" ForeColor="Red" ErrorMessage="Quantity is
required" ValidationGroup="CheckSave"></asp:RequiredFieldValidator>
<ajax:FilteredTextBoxExtender ID="FilteredTextBoxExtenderQuantity" runat="server" TargetControlID="lblQuantityIT"
FilterType="Custom, Numbers" ValidChars="." Enabled="True" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Quantity Issued" SortExpression="Rate" ItemStyle-Width="10%">
<ItemTemplate>
<asp:TextBox ID="lblQuantityIssuedIT" runat="server" Text='<%#Eval("QuantityIssued") %>' Width="90%" onblur='javascript:return
ValidateGrid(this);' MaxLength="9"></asp:TextBox>
<ajax:FilteredTextBoxExtender ID="FilteredTextBoxExtenderRateIT" runat="server" TargetControlID="lblQuantityIssuedIT"
FilterType="Custom, Numbers" ValidChars="." Enabled="True" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Delete" ItemStyle-Width="10%">
<ItemTemplate>
<asp:CheckBox runat="server" ID="cbEdit" Checked='<%# Convert.ToBoolean(Eval("DeleteFlag")) %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Code
Behind:
Declare a DataTable
in page load
DataTable dtDynamic = new DataTable();
Declare a DataTable with DataTypes
void CreateSaveDynamicTable()
{
DataColumn dc = new DataColumn();
dc = new DataColumn();
dc.ColumnName = "MatTransSlNo";
dc.DataType
= Type.GetType("System.String");
dtDynamic.Columns.Add(dc);
dc = new DataColumn();
dc.ColumnName = "MaterialId";
dc.DataType
= Type.GetType("System.String");
dtDynamic.Columns.Add(dc);
dc = new DataColumn();
dc.ColumnName = "MaterialDesc";
dc.DataType
= Type.GetType("System.String");
dtDynamic.Columns.Add(dc);
dc = new DataColumn();
dc.ColumnName = "UOMShortDesc";
dc.DataType
= Type.GetType("System.String");
dtDynamic.Columns.Add(dc);
dc = new DataColumn();
dc.ColumnName = "TransQty";
dc.DataType
= Type.GetType("System.Decimal");
dtDynamic.Columns.Add(dc);
dc = new DataColumn();
dc.ColumnName = "DeleteFlag";
dc.DataType
= Type.GetType("System.Int32");
dtDynamic.Columns.Add(dc);
}
protected void btnSave_OnClick(object sender, EventArgs e)
{
try
{
CreateSaveDynamicTable();
int i = 1;
foreach (GridViewRow r in GridView1.Rows)
{
Label MatTransSlNo = (Label)r.FindControl("lblMatTransSlNo");
Label MaterialId = (Label)r.FindControl("lblMaterialId");
Label
lblMaterialIT = (Label)r.FindControl("lblMaterialIT");
Label txtUOMIT = (Label)r.FindControl("txtUOMIT");
TextBox lblQuantityIT = (TextBox)r.FindControl("lblQuantityIT");
TextBox lblQuantityIssuedIT = (TextBox)r.FindControl("lblQuantityIssuedIT");
CheckBox cbDelete = (CheckBox)r.FindControl("cbEdit");
DataRow dr = dtDynamic.NewRow();
dr["MatTransSlNo"] = i;
dr["MaterialId"] = Convert.ToInt32(MaterialId.Text);
dr["MaterialDesc"] = lblMaterialIT.Text;
dr["UOMShortDesc"] = txtUOMIT.Text;
if (lblQuantityIssuedIT.Text != string.Empty)
{
dr["TransQty"] = Convert.ToDecimal(lblQuantityIssuedIT.Text);
}
else
{
dr["TransQty"] = 0;
}
if (cbDelete.Checked == true)
{
dr["DeleteFlag"] = 1;
}
else
{
dr["DeleteFlag"] = 0;
}
dtDynamic.Rows.Add(dr);
i++;
}
ViewState["Dynamic"] = dtDynamic;
DataSet dsSaveMaterial = new DataSet();
dsSaveMaterial.Tables.Add(dtDynamic);
string GridData = dsSaveMaterial.GetXml();
}
catch (Exception ex)
{
lblMessage.Text = ex.Message;
}
}
No comments:
Post a Comment