Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将数据从codebehind填充到ascx文件_C#_Asp.net_Datagrid - Fatal编程技术网

C# 如何将数据从codebehind填充到ascx文件

C# 如何将数据从codebehind填充到ascx文件,c#,asp.net,datagrid,C#,Asp.net,Datagrid,在我的代码隐藏中,我得到的公司名称和地址如下: connection.Open(); sqlCmd = new SqlCommand(sqlCmd.CommandText, connection); SqlDataReader sqlReader = sqlCmd.ExecuteReader(); DataTable dt = new DataTable();

在我的代码隐藏中,我得到的公司名称和地址如下:

connection.Open();
                    sqlCmd = new SqlCommand(sqlCmd.CommandText, connection);
                    SqlDataReader sqlReader = sqlCmd.ExecuteReader();
                    DataTable dt = new DataTable();


                    sqlReader.Read();
                    dt.Load(sqlReader);
                    for(int i>=0 ; i = dt.Rows.Cout - 1; i--)
                    {
                           string companyName[i] = dt.Rows[i]["companyName"].ToString();
                           sqlCmd.CommandText = addr;
                           sqlCmd.Parameters.AddWithValue("companyName", dt.Rows[i]["companyName"].ToString());

                           using (var addressReader = sqlCmd.ExecuteReader())
                           {
                               if (addressReader.Read())
                               {
                                string address[i] = addressReader["address"].ToString();
                               }
                           }
                     }
所以我想把companyName[I]和address[I]的值放在我的ascx文件中。当前它使用datagrid,但我不想使用datagrid,只想重用它当前的表格式:

<table cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr id="resultsRow" runat="server">
    <td vAlign="top">
        <a name="tagCompaniesDatagrid"></a>
        <asp:datagrid id="dgCompanies" Width="100%" AllowSorting="True" DataKeyField="companyId" AutoGenerateColumns="False"
            AllowPaging="True" AllowCustomPaging="True" OnPageIndexChanged="dgCompanies_Paging" Runat="server" onprerender="dgCompanies_PreRender" >
            <HeaderStyle CssClass="DGColumnHead" />
            <ItemStyle CssClass="DGItemStyle" />
            <AlternatingItemStyle CssClass="DGAlternatingItemStyle" />
            <FooterStyle CssClass="DGColumnFoot" />
            <PagerStyle CssClass="DGPagerStyle" HorizontalAlign="Right" Mode="NumericPages" PageButtonCount="5" />
            <Columns>
                <asp:TemplateColumn SortExpression="companyName" HeaderText="Company Name">
                    <HeaderStyle Width="40%" />
                    <ItemTemplate>
                        <table cellSpacing="0" cellPadding="0" width="100%" border="0">
                            <tr>
                                <td width="95%">
                                    <asp:LinkButton CssClass="LinkButton" id="btnView" Runat="server" CommandName="ViewDetails" CommandArgument="<%# GetViewUrl((System.Data.Common.DbDataRecord)Container.DataItem) %>">
                                        <span ID="SpanTitle" Runat="server">
                                            <%# DataBinder.Eval(Container.DataItem,"companyName") %>
                                        </span>
                                    </asp:LinkButton>
                                    <asp:Label CssClass="DGNormal" ID="lblStatus" Runat="server" text='<%# StatusToText((int) DataBinder.Eval(Container.DataItem,"statusId")) %>'/>
                                    <asp:Image visible='<%# (bool) DataBinder.Eval(Container.DataItem,"WMCCMRated") %>' ID="imgProfiled" Runat="server" ImageUrl="~/images/WMCCMRated.gif" AlternateText="This company has been competency profiled by WMG" />
                                    <asp:Image Visible='<%# !(Convert.IsDBNull(DataBinder.Eval(Container.DataItem,"feedback")))%>' ID="feedback" Runat="server" ImageUrl="~/images/feedback.gif" AlternateText="The number of feedback this company has been received is ->" ImageAlign="Bottom" Height="18px" Width="12px"/>
                                    <asp:Label CssClass="NormalBold" ID="lblFeedback" Runat="server" text='<%# DataBinder.Eval(Container.DataItem,"feedback") %>' ForeColor="Navy"/>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <span class="DGNormalBold">
                                        <%# DataBinder.Eval(Container.DataItem,"phoneNumber") %>
                                    </span>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <span class="DGNormal" ID="SpanProfile" Runat="server">
                                        <%# cutToNCharacters((string)DataBinder.Eval(Container.DataItem,"Profile")) %>
                                    </span>
                                </td>
                            </tr>
                        </table>
                    </ItemTemplate>
                    <FooterTemplate>
                        <cc1:DropDownCombo ID="dplCompanies" Runat="server" Width="95%" DataTextField="CompanyName" DataValueField="CompanyId" DataSource='<%# GetCompanyNames() %>' />
                    </FooterTemplate>
                </asp:TemplateColumn>
                <asp:TemplateColumn SortExpression="address" HeaderText="Address">
                    <HeaderStyle Width="15%" />
                    <ItemTemplate>
                        <table cellSpacing="0" cellPadding="0" width="100%" border="0">
                            <tr>
                                <td>
                                    <span class="DGNormal" ID="SpanAddress" Runat="server">
                                        <%# DataBinder.Eval(Container.DataItem,"address")%>
                                    </span>
                                </td>
                            </tr>
                        </table>
                    </ItemTemplate>
                </asp:TemplateColumn>

我的理解是,我应该替换这两行:

 <%# DataBinder.Eval(Container.DataItem,"companyName") %>



但我不知道我还需要更改什么,以及如何使它自动填充我的值集。有人熟悉吗?

聊天后,这就是您需要的

数据需要存储在模型中,然后可以“回传”到页面上。您需要根据需要修改模型

户控件

地址
代码隐藏
公共类公司模型{
公共字符串companyName{get;set;}
公共字符串地址{get;set;}
}
sqlCmd=newsqlcommand(“选择companyName,从company\u表中选择地址”,连接);
SqlDataReader sqlReader=sqlCmd.ExecuteReader();
DataTable dt=新的DataTable();
上市公司=新上市公司();
sqlReader.Read();
dt.Load(sqlReader);
对于(int i=0;i
我不确定您在这里做什么。。。为什么要这样做
string address[i]=addressReader[“address”]。ToString()?这毫无意义,因为您正在创建一个从未使用过的
i
维度的数组。。。你的数据没有任何用处…请继续。。。您能否提供一个简短的示例,说明在浏览器中呈现的内容以及您希望呈现的内容。我的数据将显示在ascx文件中,如问题中所述!我确实明白,但我提到的那句话没有任何作用。它对读取的数据没有任何作用。你需要声明数组在循环之外才能使用它们。我真的不明白你的想法。数组将首先在循环外声明,然后在循环中声明,我需要那一行将值存储到数组中,我认为这有意义吗?每次我在循环中更改时,参数add to commandText更改,然后addressReader更改,然后address[i]获取新值……我如何访问存储在列表中的每个companyName来查询其他值并将其添加到CompanyModel?我正在尝试以下操作:foreach(companyName in COMPANYS.Contains(“companyName”){sqlCmd.CommandText=getKey;sqlCmd.Parameters.AddWithValue(“companyName”,compnName);使用(var keyReader=sqlCmd.ExecuteReader()){if(keyReader.Read()){companys.Add(new CompanyModel compnKey=keyReader.GetString(“key”);}}sqlCmd.CommandText=getstandard;sqlCmd.Parameters.AddWithValue(“companyName”,compnName);使用(var standardReader=sqlCmd.ExecuteReader()){if(standardReader.Read()){companys.Add(new CompanyModel compnStandards=keyReader.GetString(“标准”);}}}}}列表中包含公司。因此需要将公司从列表中删除。
companys.contains()
返回布尔值。您提供的代码可能永远不会编译,因为您要求它在列表中查找字符串。您需要
foreach(CompanyModel companys in companys){string companyName=company.companyName;}
请阅读一些关于迭代和数据建模的内容,因为如果你不了解迭代的基础知识,你会感到困惑。一个快速的谷歌给了我这个信息。我可以在不同的步骤为公司增加更多的价值吗?比如:company.add(new CompanyModel{compnStandards=dtb2.Rows[0][0].ToString());那么是否每次都需要将数据源和数据绑定分配给companyRepeater?
 <%# DataBinder.Eval(Container.DataItem,"address")%>
<table>
    <tr>
        <td>company</td><td>address</td>
    </tr>
    <asp:Repeater ID="companyRepeater" runat="server">

    <ItemTemplate>
        <tr>
            <td><%#Eval("companyName") %></td><td><%#Eval("address") %></td>
        </tr>
    </Itemtemplate>

    </asp:Repeater>
</table>
public class CompanyModel{
    public string companyName {get; set;}
    public string address {get; set;}
}

sqlCmd = new SqlCommand("SELECT companyName, address FROM company_table", connection);
SqlDataReader sqlReader = sqlCmd.ExecuteReader();
DataTable dt = new DataTable();

List<CompanyModel> companies= new List<CompanyModel>();
sqlReader.Read();
dt.Load(sqlReader);

for(int i = 0; i < dt.Rows.Count; i++)
{
    companies.Add(new CompanyModel 
    { 
        companyName =  dt.Rows[i]["companyName"].ToString(),
        address =  dt.Rows[i]["address"].ToString()
    });
}

companyRepeater.DataSource = companies;
companyRepeater.DataBind();