【发布时间】:2014-05-29 14:49:49
【问题描述】:
在我的代码隐藏中,我得到公司名称和地址:
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 dgcompanies,但我不想使用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") %>
和
<%# DataBinder.Eval(Container.DataItem,"address")%>
但我不知道我还需要更改什么以及如何使其自动填充我的一组值。有谁熟悉这个吗?
【问题讨论】:
-
我不确定你在这里做什么...你为什么要这样做
string address[i] = addressReader["address"].ToString();?这是没有意义的,因为您正在创建一个从未被使用过的i维度数组...您的数据无处可去... -
继续...您能否提供一个简短的示例,说明浏览器中呈现的内容以及您期望呈现的内容。
-
我的数据将显示在问题中提到的 ascx 文件中!
-
我明白了,但我提到的那行没有做任何事情。它不会对读出的数据做任何事情。您需要在循环之外声明数组才能使用它们。
-
我真的不明白你的想法。数组将首先在循环外声明,然后在循环中,我需要有那一行来将值存储到数组中,我认为这有意义吗?每次我在循环中更改时,添加到 commandText 的参数都会更改,然后 addressReader 更改,然后 address[i] 获取新值...