Отображать переменные сеанса в GridView (ASP.NET)? - PullRequest
2 голосов
/ 18 августа 2010

Просто начинайте с ASP.NET и затрудняйтесь в использовании GridView. У меня есть набор переменных Session, которые я хочу поместить в элемент управления GridView, но мне не хватает знаний. Файл:

<%@ Page Title="Warehouse" Language="C#" AutoEventWireup="true" 
    MasterPageFile="~/Site.master"
    CodeFile="Warehouse.aspx.cs" Inherits="Warehouse" %>

<asp:Content ID="HeaderContent" runat="server" 
     ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>
        Warehouse
    </h2>
    <asp:Panel ID="WarehousePanel" runat="server">
        <asp:GridView ID="GridView1" runat="server">
        </asp:GridView>
    </asp:Panel>
</asp:Content>

В приведенном ниже коде я хочу добавить переменные сеанса в GridView1, просто для целей отображения. Позже он будет подключен к базе данных, но для практики я хочу знать, как я могу добавить свои переменные сеанса в GridView1. Файл:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Warehouse : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["milk"] == null)
                Session["milk"] = "0";
            if (Session["apple"] == null)
                Session["apple"] = "0";
            if (Session["orange"] == null)
                Session["orange"] = "0";

            // on page load, add session variables ie Session["milk"].ToString();
            // column 1: inventory name
            // column 2: inventory value
            GridView1.?
        }
    }

Возможно, я думаю, что все это неправильно. Если я это сделаю, пожалуйста, поправьте меня на правильный путь! Спасибо за внимание.

1 Ответ

5 голосов
/ 18 августа 2010

Это так же просто, как вставить это в свою Page_Load:

// Sample to add a value to session to ensure that something is shown
Session.Add("SessionValue1", "Value");

// Actual work of binding Session to the grid
GridView1.DataSource = Session;
GridView1.DataBind();

Есть статья в Базе знаний Microsoft , которая в некоторой степени отвечает на ваши вопросы, так как содержит несколько примеров.привязки данных в действии и ссылки на дальнейшие статьи, дающие дополнительную информацию.

Предполагается, что у вас есть некоторый код, такой как:

var warehouseItems = 
    from item in DataTableContainingWarehouseItems.AsEnumerable()
    select
    new
    {
        InventoryName = item.Field<string>("Name"),
        InventoryValue = item.Field<int>("Value"),
        InventoryPrice = item.Field<decimal>("Price"),
        StockOnHandValue = Convert.ToDecimal(item.Field<int>("Value") * item.Field<decimal>("Price"))
    };

Затем вы можете привязать непосредственно к этому:

GridView1.DataSource = warehouseItems;
GridView1.DataBind();
...