0

私は大学のプロジェクトに取り組んでおり、さらに行を追加する必要があるグリッドビューがあります。2 つのテキスト フィールドと 1 つのボタンがあります。.cs ファイルのコードのボタン部分を除いて、すべて問題ないようです。

ID、タイトル、年を含むワインのリストを作成します。

ワイン.aspx:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Wine.aspx.cs" Inherits="WineNotProject2.AdminPages.Wine" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
   <br /><br />
    <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="id" DataSourceID="SqlDataSource1">

        <Columns>
            <asp:CommandField ShowEditButton="True" />
            <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True" SortExpression="id" />
            <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
            <asp:BoundField DataField="Year" HeaderText="Year" SortExpression="Year" />

        </Columns>
    </asp:GridView>


<p><asp:Label ID="lblTitle" runat="server" Text="Wine Title"></asp:Label><br />
<asp:TextBox ID="txtTitle" runat="server" Width="176px"></asp:TextBox><br />

<p><asp:Label ID="lblYear" runat="server" Text="Wine Year"></asp:Label><br />
<asp:TextBox ID="txtYear" runat="server" Width="176px"></asp:TextBox><br />
</p>


<asp:Button ID="btnAdd" runat="server" Text="Add Wine" OnClick="btnAdd_Click" />

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
        SelectCommand="SELECT [id], [Title], [Year] FROM [Wine]">
    </asp:SqlDataSource>


</asp:Content>

ワイン.aspx.cs:

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

namespace WineNotProject2.AdminPages
{
    public partial class Wine : System.Web.UI.Page
    {
        private WineEntities10 ent2 = new WineEntities10();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RefreshGrid();
            }
        }
            private void RefreshGrid()
            {
                GridView2.DataSource = ent2.Wines.ToList();
                GridView2.DataBind();
            }
            protected void btnAdd_Click(object sender, EventArgs e)
            {
                Wine w2 = new Wine();
                w2.Title = txtTitle.Text;
                w2.Year = txtYear.Text;
                ent2.Wines.AddObject(w2);
                ent2.SaveChanges();

            }

        }
    }

アップデート:

エラーメッセージは次のとおりです。

エラー 3 'WineNotProject2.AdminPages.Wine' には 'Year' の定義が含まれておらず、タイプ 'WineNotProject2.AdminPages.Wine' の最初の引数を受け入れる拡張メソッド 'Year' が見つかりませんでした (using ディレクティブまたはアセンブリ参照?) C:\Visual Studio 2010\Projects\WineNotProject7\WineNotProject2\AdminPages\Wine.aspx.cs 30 20 WineNotProject2

4

3 に答える 3

1

RefreshGrid新しい Wine を追加した後に呼び出す必要があると思います。

protected void btnAdd_Click(object sender, EventArgs e)
{
    Wine w2 = new Wine();
    w2.Title = txtTitle.Text;
    w2.Year = txtYear.Text;
    ent2.Wines.AddObject(w2);
    ent2.SaveChanges();
    RefreshGrid(); // <-------
}

たぶん、年を解析して次のようにする必要もありますint

w2.Year = int.Parse(txtYear.Text);
于 2013-03-06T21:15:15.827 に答える
0

あなたのコードは見栄えが良かったのですが、追加ボタンの最後に RefreshGrid() の呼び出しを逃しました

為に

protected void btnAdd_Click(object sender, EventArgs e)
            {
                Wine w2 = new Wine();
                w2.Title = txtTitle.Text;
                w2.Year = txtYear.Text;
                ent2.Wines.AddObject(w2);
                ent2.SaveChanges();
                **RefreshGrid**

            }

もしent2.SaveChanges(); 動作していない場合は、使用してくださいent2.SubmitChanges();

于 2013-03-06T21:17:25.717 に答える
0

問題は、同じ名前のWineを持つ 2 つのクラスがあることです。

public partial class **Wine** : System.Web.UI.Page

**Wine** w2 = new **Wine**();

ASP.Net ページの名前をWineListに変更して、

そのクラス名はpublic partial class **WineList**

ここに画像の説明を入力

于 2013-03-07T04:43:50.583 に答える