Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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
将数据绑定到Asp.net中Listview中的标头模板_Asp.net - Fatal编程技术网

将数据绑定到Asp.net中Listview中的标头模板

将数据绑定到Asp.net中Listview中的标头模板,asp.net,Asp.net,我想在标题中显示一些细节,如名称、Lic.#,它是唯一的,对于特定的Listview不会重复。是否仍要显示此内容?您可以为要在布局中显示的数据引入页面属性,从ItemDataBound事件处理程序中的第一行dataItem获取这些属性,并在ListView的DataBound事件处理程序中绑定布局控件: <asp:ListView ID="ListView1" runat="server" DataKeyNames="job_id" DataSourceID="SqlDataSource1

我想在标题中显示一些细节,如名称、Lic.#,它是唯一的,对于特定的Listview不会重复。是否仍要显示此内容?

您可以为要在布局中显示的数据引入页面属性,从ItemDataBound事件处理程序中的第一行dataItem获取这些属性,并在ListView的DataBound事件处理程序中绑定布局控件:

<asp:ListView ID="ListView1" runat="server" DataKeyNames="job_id" DataSourceID="SqlDataSource1">
          <LayoutTemplate>
               <table>
                    <thead>
                         <tr runat="server" id="headerRow">
                              <th>
                                   <%# FirstHeaderText %></th>
                              <th>
                                   <%# SecondHeaderText  %>
                              </th>
                         </tr>
                    </thead>
                    <tbody>
                         <tr runat="server" id="itemPlaceholder" />
                    </tbody>
               </table>
          </LayoutTemplate>
          <ItemTemplate>
               <tr>
                    <td>
                         <%# Eval("job_id")%></td>
                    <td>
                         <%# Eval("job_desc")%></td>
               </tr>
          </ItemTemplate>
     </asp:ListView>
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:PUBSConnectionString %>"
          SelectCommand="SELECT [job_id], [job_desc] FROM [jobs]"></asp:SqlDataSource>

服务器代码:

protected string FirstHeaderText
{
    get { return ViewState["FirstHeaderText"] as string; }
    set { ViewState["FirstHeaderText"] = value; }
}
protected string SecondHeaderText
{
    get { return ViewState["SecondHeaderText"] as string; }
    set { ViewState["SecondHeaderText"] = value; }
}

protected void Page_Init(object sender, EventArgs e)
{
    ListView1.ItemDataBound += new EventHandler<ListViewItemEventArgs>(ListView1_ItemDataBound);
    ListView1.DataBound += new EventHandler(ListView1_DataBound);
}

void ListView1_DataBound(object sender, EventArgs e)
{
    ((HtmlTableRow)ListView1.FindControl("headerRow")).DataBind();
}

void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (string.IsNullOrEmpty(FirstHeaderText) && e.Item.ItemType == ListViewItemType.DataItem)
    {
        var dataRow = e.Item.DataItem as DataRowView;
        FirstHeaderText = dataRow["job_id"].ToString();
        SecondHeaderText = dataRow["job_desc"].ToString();
    }
}
受保护的字符串FirstHeaderText
{
获取{return ViewState[“FirstHeaderText”]作为字符串;}
设置{ViewState[“FirstHeaderText”]=value;}
}
受保护字符串第二标题文本
{
获取{return ViewState[“SecondHeaderText”]作为字符串;}
设置{ViewState[“SecondHeaderText”]=value;}
}
受保护的无效页_Init(对象发送方,事件参数e)
{
ListView1.ItemDataBound+=新的事件处理程序(ListView1\u ItemDataBound);
ListView1.DataBound+=新的事件处理程序(ListView1_DataBound);
}
无效列表视图1_数据绑定(对象发送方,事件参数e)
{
((HtmlTableRow)ListView1.FindControl(“headerRow”)).DataBind();
}
无效ListView1_ItemDataBound(对象发送者,ListViewItemEventArgs e)
{
if(string.IsNullOrEmpty(FirstHeaderText)&&e.Item.ItemType==ListViewItemType.DataItem)
{
var dataRow=e.Item.DataItem作为DataRowView;
FirstHeaderText=dataRow[“作业id”].ToString();
SecondHeaderText=dataRow[“作业描述”].ToString();
}
}
另一个可用的决定是将标题部分放入itemTemplate中,但仅在第一条记录中显示它:

<asp:ListView ID="ListView1" runat="server" DataKeyNames="job_id" DataSourceID="SqlDataSource1">
     <LayoutTemplate>
          <table>
               <asp:PlaceHolder runat="server" ID="itemPlaceholder" />
          </table>
     </LayoutTemplate>
     <ItemTemplate>
          <tr runat="server" visible='<%# (int)DataBinder.Eval(Container, "DataItemIndex") == 0 %>'>
               <th>
                    <%# Eval("job_id")%></th>
               <th>
                    <%# Eval("job_desc")%></th>
          </tr>
          <tr>
               <td>
                    <%# Eval("job_id")%></td>
               <td>
                    <%# Eval("job_desc")%></td>
          </tr>
     </ItemTemplate>
</asp:ListView>


您从哪里获取这些数据?这些属性是在ListView的数据源中显示的还是您想使用一些页面属性?它来自sqldatasource