jitendra raj Ответов: 0

Как вычислить текущую сумму столбца в gridview, когда столбец add dyanamicly on checkboxlist selected event change in C# using cells


Я работаю над школьным ERP-проектом в качестве ASP.NET веб-приложение, в котором у нас есть gridview. На моей странице Я хочу вычислить сумму значений ячеек по строкам gridview, но код, который я использую, возвращает в два или три раза больше суммы конкретного столбца. Есть какие-нибудь предложения о том, как мы можем рассчитать правильную сумму конкретного столбца?

Примечание: - здесь у нас есть один список чекбоксов, который заполняется из базы данных, а элемент chekboxlist - это столбец gridview, когда мы проверили элемент в chekboxlist, столбец динамически добавляет gridview, а когда мы проверили второй элемент в cheboxlist, то второй столбец добавил int gridview, как показано на моем рисунке

http://i.stack.imgur.com/WOzgD.png[^]

мой желаемый результат (выход)
http://i.stack.imgur.com/tqMav.png[^]

мой код c#.
  using System;
  using System.Collections;
  using System.Configuration;
  using System.Data;
  using System.Linq;
  using System.Web;
  using System.Web.Security;
  using System.Web.UI;
  using System.Web.UI.HtmlControls;
  using System.Web.UI.WebControls;
  using System.Web.UI.WebControls.WebParts;
  using System.Xml.Linq;
  using System.Data.SqlClient;
  namespace egurukul
  {
  public partial class feerecipts : System.Web.UI.Page
   {
    decimal val;
   string _connStr =   ConfigurationManager.ConnectionStrings["con1"].ConnectionString;
     protected void Page_Load(object sender, EventArgs e)
       {
          if (!IsPostBack)
           {

            bindgvfeehead();
            BindTableColumns();
           }
       }

    private void BindTableColumns()
     {

     DataTable table = new DataTable();

     using (SqlConnection conn = new SqlConnection(_connStr))
     {

         SqlCommand cmd = new SqlCommand("Readduedat", conn);

         cmd.CommandType = CommandType.StoredProcedure;

         // get the adapter object and attach the command object to it

         SqlDataAdapter ad = new SqlDataAdapter(cmd);


         // fire Fill method to fetch the data and fill into DataTable

         ad.Fill(table);

     }

     chbxlstduedate.DataSource = table;
     chbxlstduedate.DataTextField = "duemonth";
     chbxlstduedate.DataValueField = "duedateid";
     chbxlstduedate.DataBind();

 }

 public void bindgvfeehead()
 {
     SqlConnection
     con = new SqlConnection();
     con.ConnectionString =   ConfigurationManager.ConnectionStrings["con1"].ConnectionString;
     con.Open();
     SqlCommand cmd = new SqlCommand();
     cmd.CommandText = "readfeehead";
     cmd.CommandType = CommandType.StoredProcedure;
     cmd.Connection = con;
     cmd.Parameters.AddWithValue("@classname", Convert.ToString(ddlclassname.SelectedItem));
     cmd.Parameters.AddWithValue("@feecatename", Convert.ToString(ddlstcategory.SelectedItem));
     SqlDataAdapter da = new SqlDataAdapter(cmd);
     DataTable table = new DataTable();
     da.Fill(table);
     gvfeehead.DataSource = table;
     gvfeehead.DataBind();
     con.Close();

 }

 private void GetData()
 {

     DataTable table = new DataTable();

     // get the connection

     SqlConnection conn = new SqlConnection(_connStr);
     conn.Open();
     SqlCommand cmd = new SqlCommand();
     cmd.Connection = conn;
     cmd.CommandText = "readfeedetails";
     cmd.CommandType = CommandType.StoredProcedure;
     // instantiate the command object to fire
     cmd.Parameters.AddWithValue("@classname", Convert.ToString(ddlclassname.SelectedItem));
     cmd.Parameters.AddWithValue("@feecatename", Convert.ToString(ddlstcategory.SelectedItem));
     SqlDataAdapter ad = new SqlDataAdapter(cmd);
     // fire Fill method to fetch the data and fill into DataTable

     ad.Fill(table);
     conn.Close();

     // specify the data source for the GridView

     GridView1.DataSource = table;

     // bind the data now

     GridView1.DataBind();
 }

 protected void chbxlstduedate_SelectedIndexChanged(object sender, EventArgs e)
 {
     foreach (ListItem item in chbxlstduedate.Items)
     {

         if (item.Selected)
         {

             BoundField b = new BoundField();

             b.DataField = item.Text;

             b.HeaderText = item.Text;

             GridView1.Columns.Add(b);



         }


     }

     TemplateField tfield = new TemplateField();
     tfield.HeaderText = "Total";
     GridView1.Columns.Add(tfield);

     this.GetData();

     bindgvfeehead();
 }

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
 {

     for (int i = 0; i < GridView1.Rows.Count; i++)
     {

         int j;
         double Total = 0.00;
         for (j = 0; j < GridView1.Columns.Count; j++)
         {

             Total += GridView1.Rows[i].Cells[j].Text != "&nbsp;" ? double.Parse(GridView1.Rows[i].Cells[j].Text) : 0.000;

         }
         int k = Convert.ToInt32(GridView1.Columns.Count);
         GridView1.Rows[i].Cells[k - 1].Text = Total.ToString("#0.000");


         }

       }

    }
}



мой код aspx

<div style="float:left">
                        <asp:GridView ID="gvfeehead" runat="server" AutoGenerateColumns="False"
                            BackColor="White" BorderColor="#336666" BorderStyle="Double"
                            Font-Size="11px"   BorderWidth="3px"
                            CellPadding="4" GridLines="both" ShowFooter="True">
                            <RowStyle ForeColor="#333333" BackColor="White" Height="20px" />
                            <Columns>
                               <asp:TemplateField>
                                    <HeaderTemplate>Sr.No </HeaderTemplate>
                                    <ItemTemplate>  <%#Container.DataItemIndex+1 %></ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField>
                                    <HeaderTemplate>Fee Name </HeaderTemplate>
                                    <ItemTemplate>
                                    <asp:Label ID="lblfeename" runat="server" Text='<%#Eval("feename") %>'></asp:Label>
                                    </ItemTemplate>
                                    <FooterTemplate> <asp:Label ID="lblfeename" CssClass="footer_text" runat="server" Text="Total"></asp:Label></FooterTemplate>
                                </asp:TemplateField>
                           </Columns>
                            <FooterStyle BackColor="White" ForeColor="#333333" />
                            <PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" />
                            <SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />
                            <HeaderStyle BackColor="#336666" Font-Bold="True" ForeColor="White" />
                        </asp:GridView>
                    </div>
                    <div>
                        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
                            BackColor="White" BorderColor="#336666" BorderStyle="Double"
                            Font-Size="11px" BorderWidth="3px"
                            CellPadding="4" GridLines="both"
                            ShowFooter="True" EnableViewState="false"
                            onrowdatabound="GridView1_RowDataBound">
                            <RowStyle ForeColor="#333333" BackColor="White" Height="21px" />
                            <Columns>

                            </Columns>
                            <FooterStyle BackColor="White" ForeColor="#333333" Font-Bold="true" />
                            <PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" />
                            <SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />
                            <HeaderStyle BackColor="#336666" Font-Bold="True" ForeColor="White" />
                        </asp:GridView>

                        </div>



       <div class="duedateheading">
                 <asp:Label ID="lbl_formonth" runat="server" Font-  Bold="True" Text="For Month"></asp:Label>
                         </div>
                 <asp:CheckBoxList ID="chbxlstduedate" runat="server"        AutoPostBack="true" onselectedindexchanged="chbxlstduedate_SelectedIndexChanged">
                 </asp:CheckBoxList>
                         </div>

это срочно для меня, пожалуйста, любой может дать какую-то идею или предложение ..
спасибо

0 Ответов