繁体   English   中英

asp.net C#Gridview包含数据,但仅返回单元格值=“”

[英]asp.net C# Gridview contains data but only returning cell value = “”

我遇到以下问题。 我有一个ASP.NET Gridview,其中包含12列(每月一个),并且仅一行显示基于SQL查询与这些列匹配的“ double”类型的值。

GridView具有基于其日期的数据

在这里,我为您提供了执行查询以接收匹配数据的代码段。 如上图所示,这可以正常工作。

protected void LoadZusammenfassung()
{
    List<string> tempList = new List<string>();
    DataTable dt_zusammenfassung = new DataTable();

    int countEmpty = 0;

    //Erstellen der DataTable für die Monatszusammenfassung (12 Spalten)
    for (int i = 1; i <= 12; i++)
    {
        dt_zusammenfassung.Columns.Add(i.ToString(), typeof(Double));
    }

    using(SqlConnection con = new SqlConnection(MDE_ConnectionString))
    {
        con.Open();

        //Durchläuft die Monate 1-12 um die summierten Überstunden den einzelnen Spalten zuordnen zu können
        for (int i = 1; i <= 12; i++)
        {
            _query_zusammenfassung = "SELECT SUM(Anz_ueberstunden) FROM ERP WHERE Month(Ueberstundendatum) = '" + i.ToString() + "'";

            if (DDL_user.SelectedValue != "Alle Benutzer")
            {
                _query_zusammenfassung = _query_zusammenfassung + " AND UserName = '" + DDL_user.SelectedValue + "'";
            }
            if (DDL_year.SelectedValue != "Gesamter Zeitraum")
            {
                _query_zusammenfassung = _query_zusammenfassung + " AND YEAR(Ueberstundendatum) = '" + DDL_year.SelectedValue + "'";
            }

            using (SqlCommand cmd = new SqlCommand(_query_zusammenfassung, con))
            {
                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        if (reader.HasRows)
                        {
                            if (reader[0] == null || reader[0] == DBNull.Value)
                            {
                                //tempList.Add("0.00");
                            }
                            else
                            {
                                tempList.Add(reader[0].ToString());
                            }

                        }
                    }
                }
            }
        }
        dt_zusammenfassung.Rows.Add(tempList.ToArray());

        foreach(string item in tempList)
        {
            if(item == "" || item == DBNull.Value.ToString() || item == null)
            {
                countEmpty++;
            }
        }

        if (countEmpty < 12)
        {
            gridView_zusammenfassung.DataSource = dt_zusammenfassung;
            gridView_zusammenfassung.DataBind();
        }

        UpdatePanelZusammenfassung.Update();
    }
}

在此之后,我想分析gridview中的数据以寻找一些标准,例如“任何大于20的值”。 这发生在gridview的DataBound事件中。

protected void gridView_zusammenfassung_DataBound(object sender, EventArgs e)
{
    double CellValue;

    foreach (GridViewRow row in gridView_zusammenfassung.Rows)
    {
        for (int i = 0; i < gridView_zusammenfassung.Columns.Count; i++)
        {
            string Value = row.Cells[i].Text;
            //string Value = Convert.ToString(gridView_zusammenfassung.Rows[row.RowIndex].Cells[0].Text);

            if (double.TryParse(Value, out CellValue))
            {
                if (CellValue > 20)
                {
                    row.Cells[i].ForeColor = Color.Red;
                    row.Cells[i].Font.Bold = true;
                }
            }
            //else if (string.IsNullOrEmpty(row.Cells[i].Text))
            //{
            //    row.Cells[i].Text = "-";
            //}
        }
    }
}

还有问题。 “ row.Cells [i] .Text”始终返回,并且为空字符串,例如“”。 我不知道这可能是什么。

-编辑-

我不知道是否有帮助,但这是Updatepanel中gridview的html部分

<%-- GridView Zusammenfassung --%>
        <td style="padding-left:20px; padding-top:36px;">
            <asp:UpdatePanel runat="server" ID="UpdatePanelZusammenfassung" UpdateMode="Conditional">
                <ContentTemplate>
                        <div runat="server" class="gridview" style="overflow-y:hidden; width:1500px; display:inline;">
                            <asp:GridView runat="server" ID="gridView_zusammenfassung" AllowPaging="false" CssClass="table table-striped table-bordered table-hover" BackColor="White" BorderColor="#009933" AutoGenerateColumns="false" HeaderStyle-BackColor="Green" OnDataBound="gridView_zusammenfassung_DataBound">

                                <Columns>
                                    <asp:TemplateField HeaderStyle-Height="57px" ItemStyle-Height="50px" HeaderStyle-CssClass="GridLines2" Visible="true" ItemStyle-CssClass="GridLines2" FooterStyle-CssClass="GridLines2" HeaderText="Jan" HeaderStyle-Wrap="false" FooterStyle-Wrap="false" ItemStyle-Wrap="false" ItemStyle-Width="100px">
                                        <ItemTemplate>
                                            <asp:Label ID="lbl_jan" runat="server" Text='<%# Eval("1")%>' />
                                        </ItemTemplate>
                                    </asp:TemplateField>

                                    <asp:TemplateField HeaderStyle-CssClass="GridLines2" Visible="true" ItemStyle-CssClass="GridLines2" FooterStyle-CssClass="GridLines2" HeaderText="Feb" HeaderStyle-Wrap="false" FooterStyle-Wrap="false" ItemStyle-Wrap="false" ItemStyle-Width="100px">
                                        <ItemTemplate>
                                            <asp:Label ID="lbl_feb" runat="server" Text='<%# Eval("2")%>' />
                                        </ItemTemplate>
                                    </asp:TemplateField>

                                    <asp:TemplateField HeaderStyle-CssClass="GridLines2" Visible="true" ItemStyle-CssClass="GridLines2" FooterStyle-CssClass="GridLines2" HeaderText="Mär" HeaderStyle-Wrap="false" FooterStyle-Wrap="false" ItemStyle-Wrap="false" ItemStyle-Width="100px">
                                        <ItemTemplate>
                                            <asp:Label ID="lbl_mar" runat="server" Text='<%# Eval("3")%>' />
                                        </ItemTemplate>
                                    </asp:TemplateField>

                                    <asp:TemplateField HeaderStyle-CssClass="GridLines2" Visible="true" ItemStyle-CssClass="GridLines2" FooterStyle-CssClass="GridLines2" HeaderText="Apr" HeaderStyle-Wrap="false" FooterStyle-Wrap="false" ItemStyle-Wrap="false" ItemStyle-Width="100px">
                                        <ItemTemplate>
                                            <asp:Label ID="lbl_apr" runat="server" Text='<%# Eval("4")%>' />
                                        </ItemTemplate>
                                    </asp:TemplateField>

                                    <asp:TemplateField HeaderStyle-CssClass="GridLines2" Visible="true" ItemStyle-CssClass="GridLines2" FooterStyle-CssClass="GridLines2" HeaderText="Mai" HeaderStyle-Wrap="false" FooterStyle-Wrap="false" ItemStyle-Wrap="false" ItemStyle-Width="100px">
                                        <ItemTemplate>
                                            <asp:Label ID="lbl_mai" runat="server" Text='<%# Eval("5")%>' />
                                        </ItemTemplate>
                                    </asp:TemplateField>

                                    <asp:TemplateField HeaderStyle-CssClass="GridLines2" Visible="true" ItemStyle-CssClass="GridLines2" FooterStyle-CssClass="GridLines2" HeaderText="Jun" HeaderStyle-Wrap="false" FooterStyle-Wrap="false" ItemStyle-Wrap="false" ItemStyle-Width="100px">
                                        <ItemTemplate>
                                            <asp:Label ID="lbl_jun" runat="server" Text='<%# Eval("6")%>' />
                                        </ItemTemplate>
                                    </asp:TemplateField>

                                    <asp:TemplateField HeaderStyle-CssClass="GridLines2" Visible="true" ItemStyle-CssClass="GridLines2" FooterStyle-CssClass="GridLines2" HeaderText="Jul" HeaderStyle-Wrap="false" FooterStyle-Wrap="false" ItemStyle-Wrap="false" ItemStyle-Width="100px">
                                        <ItemTemplate>
                                            <asp:Label ID="lbl_jul" runat="server" Text='<%# Eval("7")%>' />
                                        </ItemTemplate>
                                    </asp:TemplateField>

                                    <asp:TemplateField HeaderStyle-CssClass="GridLines2" Visible="true" ItemStyle-CssClass="GridLines2" FooterStyle-CssClass="GridLines2" HeaderText="Aug" HeaderStyle-Wrap="false" FooterStyle-Wrap="false" ItemStyle-Wrap="false" ItemStyle-Width="100px">
                                        <ItemTemplate>
                                            <asp:Label ID="lbl_aug" runat="server" Text='<%# Eval("8")%>' />
                                        </ItemTemplate>
                                    </asp:TemplateField>

                                    <asp:TemplateField HeaderStyle-CssClass="GridLines2" Visible="true" ItemStyle-CssClass="GridLines2" FooterStyle-CssClass="GridLines2" HeaderText="Sep" HeaderStyle-Wrap="false" FooterStyle-Wrap="false" ItemStyle-Wrap="false" ItemStyle-Width="100px">
                                        <ItemTemplate>
                                            <asp:Label ID="lbl_sep" runat="server" Text='<%# Eval("9")%>' />
                                        </ItemTemplate>
                                    </asp:TemplateField>

                                    <asp:TemplateField HeaderStyle-CssClass="GridLines2" Visible="true" ItemStyle-CssClass="GridLines2" FooterStyle-CssClass="GridLines2" HeaderText="Okt" HeaderStyle-Wrap="false" FooterStyle-Wrap="false" ItemStyle-Wrap="false" ItemStyle-Width="100px">
                                        <ItemTemplate>
                                            <asp:Label ID="lbl_okt" runat="server" Text='<%# Eval("10")%>' />
                                        </ItemTemplate>
                                    </asp:TemplateField>

                                    <asp:TemplateField HeaderStyle-CssClass="GridLines2" Visible="true" ItemStyle-CssClass="GridLines2" FooterStyle-CssClass="GridLines2" HeaderText="Nov" HeaderStyle-Wrap="false" FooterStyle-Wrap="false" ItemStyle-Wrap="false" ItemStyle-Width="100px">
                                        <ItemTemplate>
                                            <asp:Label ID="lbl_nov" runat="server" Text='<%# Eval("11")%>' />
                                        </ItemTemplate>
                                    </asp:TemplateField>

                                    <asp:TemplateField HeaderStyle-CssClass="GridLines2" Visible="true" ItemStyle-CssClass="GridLines2" FooterStyle-CssClass="GridLines2" HeaderText="Dez" HeaderStyle-Wrap="false" FooterStyle-Wrap="false" ItemStyle-Wrap="false" ItemStyle-Width="100px">
                                        <ItemTemplate>
                                            <asp:Label ID="lbl_dez" runat="server" Text='<%# Eval("12")%>' />
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                </Columns>

                                <EmptyDataTemplate>
                                    Keine Daten vorhanden.
                                </EmptyDataTemplate>
                        </asp:GridView>
                    </div>
                </ContentTemplate>
            </asp:UpdatePanel>
        </td>

我找到了这个问题的答案...

我有点傻:)

 <asp:TemplateField HeaderStyle-Height="57px" ItemStyle-Height="50px" HeaderStyle-CssClass="GridLines2" Visible="true" ItemStyle-CssClass="GridLines2" FooterStyle-CssClass="GridLines2" HeaderText="Jan" HeaderStyle-Wrap="false" FooterStyle-Wrap="false" ItemStyle-Wrap="false" ItemStyle-Width="100px"> 
    <ItemTemplate>
        <asp:Label ID="lbl_jan" runat="server" Text='<%# Eval("Jan")%>' />
    </ItemTemplate>
 </asp:TemplateField>

在这一部分中,您可以看到我使用asp:labels保留我的值并处理它们。

因此,我之所以无法在单元格中接收这些值,只是因为它们从来没有在那里。 他们一直被保留在这些标签中。

我只需要使用以下行来查询所有这些标签

string CurrentLblValue = (gridView_zusammenfassung.Rows[row.RowIndex].FindControl("lbl_" + gridView_zusammenfassung.Columns[i].HeaderText.ToLower()) as Label).Text;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM