Передача данных из внутреннего вида сетки в основной вид сетки (вид сетки в шаблоне вида сетки) ASP. net C# - PullRequest
0 голосов
/ 16 апреля 2020

У меня возникли проблемы с передачей данных из внутренней сетки в основную, как показано в этом пи c

Я перепробовал слишком много решений, которые я могу найти, используя C# и Jquery. Это простая фотография, чтобы получить

GridView

Теперь это счет, считанный из базы данных, чтобы показать несколько данных, поскольку сетка содержит другую сетку по обычному коду, доступ к gridview2 для получения данных был невозможен. все, что я хочу, это получить "сумму" из gridview2, затем вычислить "сумму", затем передать ее в "total" в gridview1, также я получаю Jquery ничего не делать, это простой код обоих полей, я хочу сделать сумму с Jquery

<script type="text/javascript">
        $(function () {
            var fields = document.getElementsByClassName('clstocal');
            var sum = 0;
            for (var i = 0; i < fields.length; ++i) {
                var item = fields[i];
                sum += parseInt(item.innerHTML);
            }
            $("#totalprice").text(sum);
        }); // this code get it from this site 

    </script>
<asp:TextBox ID="amount" CssClass ="clstocal" autopostback="true" runat="server" Enabled="False" Height="24px" Text='<%# Bind("body_total") %>' Width="98px" OnTextChanged="amount_TextChanged"></asp:TextBox>

и

<asp:TextBox ID="totalprice" runat="server" Enabled="False" Height="22px" Width="145px" OnTextChanged="totalprice_TextChanged" autopostback="true"></asp:TextBox>

Есть простое решение, но не хорошее решение - это сумма результатов в базе данных, затем прочитать ее снова, но это совсем не эффективен ..

1 Ответ

0 голосов
/ 16 апреля 2020

Если честно, ответ был прост: 1. невозможно получить доступ к сетке внутри сетки 2. решен с помощью обычного кода в C#, как показано

    protected void GridHead(object sender, GridViewRowEventArgs e)
    {
        // MAin Grid which is grid number 1 
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            TextBox textboxPrice1 = e.Row.FindControl("totalprice") as TextBox;
            textboxPrice1.Text = i.ToString();
            i = 0; // Global double -> protected double i = 0; // THIS LINE TO STOP COUNTING TO OTHER NEXT INVOICE

        }

    }

    protected void GridBody(object sender, GridViewRowEventArgs e)
    {
        // Inner grid which contain multipe item need to sun then send it to Main grid
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            TextBox lblPrice2 = e.Row.FindControl("amount") as TextBox;
            i += Convert.ToDouble(lblPrice2.Text);
        }
    }

и кода для обработки сетки

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Reports._Default" %>

Добро пожаловать в редакцию счета

<!-- change both grid from OnSelectedIndexChanged to onrowdatabound to use GridViewRowEventArgs instade EventArgs-->
<asp:GridView ID="GD_Head" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" Height="206px" Width="548px" AllowSorting="True" CellPadding="4" ForeColor="#333333" GridLines="None" onrowdatabound="GridHead">
    <AlternatingRowStyle BackColor="White" />
    <Columns>
        <asp:TemplateField ShowHeader="False">
            <ItemTemplate>
                <br />
                <asp:Label ID="Label25" runat="server" Height="22px" Text="Invoice : " Width="60px"></asp:Label>
                <asp:Label ID="Label1" width="145px"  runat="server" Text='<%# Eval("invoice") %>' BorderStyle="Solid" BorderWidth="1px" Height="22px" Font-Size="Smaller"></asp:Label>
                &nbsp;<asp:Label ID="Label26" runat="server" Height="22px" Text="Kind : " Width="60px"></asp:Label>
                <asp:Label ID="Label35" runat="server" BorderWidth="1px" Height="22px" Text='<%# Eval("kind") %>' Width="71px"></asp:Label>
                &nbsp;<asp:Label ID="Label27" runat="server" Height="22px" Text="Date : " Width="60px"></asp:Label>
                <asp:Label ID="Label3" width="170px" runat="server" Text='<%# Eval("date") %>' BorderWidth="1px" Height="22px"></asp:Label>
                <br />
                <br />
                <asp:Label ID="Label28" runat="server" Height="22px" Text="File : " Width="60px"></asp:Label>
                <asp:Label ID="Label4" width="144px" runat="server" Text='<%# Eval("file") %>' BorderWidth="1px" Height="22px"></asp:Label>
                &nbsp;<asp:Label ID="Label29" runat="server" Height="22px" Text="Awb" Width="60px"></asp:Label>
                <asp:Label ID="Label5" width="313px" runat="server" Text='<%# Eval("awb") %>' BorderWidth="1px" Height="22px"></asp:Label>
                <br />
                <br />
                <asp:Label ID="Label30" runat="server" Height="22px" Text="GL : " Width="60px"></asp:Label>
                <asp:Label ID="Label6" width="144px"  runat="server" Text='<%# Eval("gl") %>' BorderWidth="1px" Height="22px"></asp:Label>
                &nbsp;<asp:Label ID="Label7" width="376px"  runat="server" Text='<%# Eval("name") %>' BorderWidth="1px" Height="23px"></asp:Label>
                <br />
                <br />
                <asp:Label ID="Label31" runat="server" Height="22px" Text="Total : " Width="60px"></asp:Label>
                <!-- Convert String to int then sum them from body to head -->
                <asp:TextBox ID="totalprice" OnTextChanged ="totalprice_TextChanged" runat="server" Enabled="False" Height="22px" Width="145px"></asp:TextBox>
                &nbsp;<asp:Label ID="lb12" runat="server" BorderWidth="1px" Height="22px" Text='<%# Eval("curId") %>' Width="38px"></asp:Label>
                &nbsp;<asp:Label ID="Label32" runat="server" Height="22px" Text="Rate : " Width="40px"></asp:Label>
                <asp:Label ID="Label9" width="100px" runat="server" Text='<%# Eval("rate") %>' BorderStyle="Solid" BorderWidth="1px" Height="22px"></asp:Label>
                &nbsp;<asp:Label ID="Label33" runat="server" Height="22px" Text="Emp" Width="40px"></asp:Label>
                <asp:Label ID="lb10" width="65px" runat="server" Text='<%# Eval("emp") %>' BorderStyle="Solid" BorderWidth="1px" Height="22px"></asp:Label>
                &nbsp;<asp:Label ID="Label34" runat="server" BorderWidth="1px" Height="22px" Text='<%# Eval("poste") %>' Width="62px"></asp:Label>
                <br />
                <br />
                &nbsp;&nbsp;<asp:Label ID="Label14" runat="server" Height="22px" Text="No" Width="52px"></asp:Label>
                &nbsp;&nbsp;<asp:Label ID="Label23" width="76px" runat="server" Text='GL' Height="22px"></asp:Label>
                &nbsp;<asp:Label ID="Label18" runat="server" Height="22px" Text="Description" Width="250px"></asp:Label>
                &nbsp;<asp:Label ID="Label19" runat="server" Height="22px" Text="Amount" Width="130px"></asp:Label>
                <!-- change both grid from OnSelectedIndexChanged to onrowdatabound to use GridViewRowEventArgs instade EventArgs-->
                <asp:GridView ID="GD_Body" runat="server" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="serial" DataSourceID="SqlDataSource2" Height="39px" onrowdatabound="GridBody" Width="629px" GridLines="None">
                    <Columns>
                        <asp:TemplateField ShowHeader="False">
                            <ItemTemplate>
                                <asp:Label ID="lb40" runat="server" BorderWidth="1px" Height="22px" Text='<%# Eval("line_no") %>' Width="52px"></asp:Label>
                                &nbsp;<asp:Label ID="Label41" runat="server" BorderWidth="1px" Height="22px" Text='<%# Eval("body_gl") %>' Width="76px"></asp:Label>
                                &nbsp;<asp:Label ID="Label42" runat="server" BorderWidth="1px" Height="22px" Text='<%# Eval("body_name") %>' Width="250px"></asp:Label>
                                &nbsp;<asp:TextBox ID="amount" CssClass ="clstocal" runat="server" Enabled="False" Height="24px" Text='<%# Bind("body_total") %>' Width="98px"></asp:TextBox>
                                &nbsp;<asp:Label ID="UN" runat="server" BorderWidth="1px" Height="22px" Text="UN" Width="52px"></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
                <br />
                <asp:Label ID="Label22" runat="server" Text="---------------------------------------------------------------------------------------------------------------------" Width="600px"></asp:Label>
                <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:Body %>" SelectCommand="SELECT * FROM [body] WHERE ([invoice] = @invoice)">
                    <SelectParameters>
                        <asp:ControlParameter ControlID="Label1" Name="invoice" PropertyName="Text" Type="String" />
                    </SelectParameters>
                </asp:SqlDataSource>
                <br />
            </ItemTemplate>
            <ControlStyle Font-Bold="True" />
        </asp:TemplateField>
    </Columns>
    <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
    <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
    <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
    <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
    <SortedAscendingCellStyle BackColor="#FDF5AC" />
    <SortedAscendingHeaderStyle BackColor="#4D0000" />
    <SortedDescendingCellStyle BackColor="#FCF6C0" />
    <SortedDescendingHeaderStyle BackColor="#820000" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Head %>" SelectCommand="SELECT * FROM [head]"></asp:SqlDataSource>

, и это результат

enter image description here

Я надеюсь, что этот ответ найдет вас, если у вас есть лучший ответ, пожалуйста, поделитесь с нами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...