ASP.NET&C#学習メモ1(伝言機能)
伝言簿の機能:
1ユーザーメッセージ
2ユーザメッセージ表示
3管理者メッセージ処理(削除と返信メッセージ)
データベースの作成
USE [Guid]
GO
CREATE TABLE [dbo].[tb](
[ID] [int] IDENTITY(1,1) NOT NULL,
[UserName] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[PostTime] [datetime] NULL,
[Message] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[IsReplied] [bit] NULL,
[Reply] [varchar](40) COLLATE Chinese_PRC_CI_AS NULL,
PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
二新しいwebsiteサイト
1ユーザー伝言機能を実現する:Default.aspxユーザー名とパスワードのコントロールを追加し、メッセージを送信するボタン
这里控件的名字尽量要有意义,增强代码的可读性,比如 textbox1命名为“txtName”。
这时就要添加点击button的事件,在Default.aspx.cs:
protected void btnSubmitMsg_Click(object sender, EventArgs e)
{
string conn = System.Configuration.ConfigurationManager.ConnectionStrings["GuidConnectionString"].ToString();
SqlConnection sqlCon = new SqlConnection(conn);
string sqlStr = @"insert into tb (UserName,PostTime,Message,IsReplied,Reply) values('" + this.txtName.Text + "','" + System.DateTime.Now + "','" + this.txtMessage.Text + "',0,'')";
// @, \ \\,\ , @
SqlCommand sqlCmd = new SqlCommand(sqlStr, sqlCon);
sqlCon.Open();
int i = sqlCmd.ExecuteNonQuery();
sqlCon.Close();
if (i > 0)
Response.Write("alert('succeed') ");
else
Response.Write("there are some errors");
BindData();
}
データベース操作、データベース操作の基本手順について説明します.
1)データベース接続文字列の取得
2)データベース接続の確立
3)実行するSql文を確立する
4)Sql文を実行する接続を開く
5)Sql文の実行
6)接続をクローズし,メッセージを返すものもあれば,返さなくてもよいものもある.
これでユーザーからのメッセージがOK
2ユーザメッセージ表示
ここでは、データソースコントロールであるrepeaterを使用します.repeaterコントロールをaspxページにドラッグすると、aspxソースページで自分でコードを打つほうが便利です.ASPの勉強を始めたばかりです.NETの时はドラッグコントロールが便利だと思っていましたが、今はソースコードの中で直接コードを叩くのが好きです.ドラッグコントロールの设定属性は属性ボックスの中で探す必要があるので、自分が必要な属性はどの属性を叩くのが速いです.
repeaterコントロールは、その名の通り「繰り返し」です.つまり、構造フォーマットを書くだけで、データをバインドした後、データはこの構造に従って表示されます.
repeaterには5つのtempleがあり、ここではItemTempleしか使われていません.また、repeaterコントロールの内容はコードしか打てません.repeaterはDefaultです.aspxページCode:
<
-
:
フロントバインドデータ:
データをバインドする以上、バックグラウンドDBからデータが転送されます.バックグラウンドでデータをバインドする方法を見てみましょう.
public void BindData()
{
string conn = System.Configuration.ConfigurationManager.ConnectionStrings["GuidConnectionString"].ToString();
SqlConnection sqlCon = new SqlConnection(conn);
string sqlStr = "select * from tb";
SqlDataAdapter sda = new SqlDataAdapter(sqlStr, sqlCon);
DataSet ds = new DataSet();
sda.Fill(ds, "tb");
rptShowMsg.DataSource = ds.Tables["tb"];
rptShowMsg.DataBind();
}
DataAdapter,DataSet,DataTable.ADO.NET 。
DataSet ,DataTable ,DataAdapter “ ” , “ ”
:
1 )
2 )
3 ) Sql
4 ) Adapter, SqlCommand。
5 ) Dataset,
6) Adapter dataset
7) ( repeater,ID="rptShowMsg") 。
* dataset , “ ” 。
, , , 。
BindData() page_load() , button 。 :
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Data.SqlTypes;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData();
}
}
protected void btnSubmitMsg_Click(object sender, EventArgs e)
{
string conn = System.Configuration.ConfigurationManager.ConnectionStrings["GuidConnectionString"].ToString();
SqlConnection sqlCon = new SqlConnection(conn);
string sqlStr = @"insert into tb (UserName,PostTime,Message,IsReplied,Reply) values('" + this.txtName.Text + "','" + System.DateTime.Now + "','" + this.txtMessage.Text + "',0,'')";
// @, \ \\,\ , @
SqlCommand sqlCmd = new SqlCommand(sqlStr, sqlCon);
sqlCon.Open();
int i = sqlCmd.ExecuteNonQuery();
sqlCon.Close();
if (i > 0)
Response.Write("alert('succeed') ");
else
Response.Write("there are some errors");
BindData();
}
public void BindData()
{
string conn = System.Configuration.ConfigurationManager.ConnectionStrings["GuidConnectionString"].ToString();
SqlConnection sqlCon = new SqlConnection(conn);
string sqlStr = "select * from tb";
SqlDataAdapter sda = new SqlDataAdapter(sqlStr, sqlCon);
DataSet ds = new DataSet();
sda.Fill(ds, "tb");
rptShowMsg.DataSource = ds.Tables["tb"];
rptShowMsg.DataBind();
}
}
:
3 ( )
username=admin password=admin , 。 Query DB 。
, Panel , 。
adminLogin.aspx :
repeater 2 : 、 。 2 Button repeater , button repeater
,
repeater :
OnItemCommand="Repeater1_ItemCommand"。 repeater
, repeater 。
“Delete”, “Update”, Where ,
ID , : : CommandName="deleteMsg" :CommandArgument=''
❀“ ” : , , 。
❀ : BindData() , ID,
CommandArgument=''
, Eval 。
❀ : , ID, , DB【 :Text='', , , adminLogin.aspx , default , default Reply-Eval("Reply") %>】
adminLogin.aspx.cs :
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.SqlTypes;
public partial class adminLogin : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// BindData();
}
protected void btnLogin_Click(object sender, EventArgs e)
{
if ((this.txtName.Text == "admin") && (this.txtpwd.Text == "admin"))
{
BindData();
this.Panel1.Visible = true;
}
}
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
string conn = System.Configuration.ConfigurationManager.ConnectionStrings["GuidConnectionString"].ToString();
SqlConnection sqlCon = new SqlConnection(conn);
if (e.CommandName == "deleteMsg")
{
string sqlStr = "delete from tb where ID="+ e.CommandArgument+"";
SqlCommand cmd = new SqlCommand(sqlStr, sqlCon);
sqlCon.Open();
int i=cmd.ExecuteNonQuery();
sqlCon.Close();
if (i > 0)
Response.Write("alert('succeed!') ");
else
Response.Write("alert('failed') ");
BindData();
}
if (e.CommandName == "sendReply")
{
string strSql="update tb set IsReplied=1 ,Reply='"+((TextBox)e.Item.FindControl("txtReply")).Text+"'where ID="+e.CommandArgument+"";
sqlCon.Open();
SqlCommand cmd = new SqlCommand(strSql, sqlCon);
int i = cmd.ExecuteNonQuery();
sqlCon.Close();
if (i > 0)
Response.Write("alert('succeed!') ");
else
Response.Write("alert('failed') ");
BindData();
}
}
public void BindData()
{
string conn = System.Configuration.ConfigurationManager.ConnectionStrings["GuidConnectionString"].ToString();
SqlConnection sqlCon = new SqlConnection(conn);
string sqlStr = "select * from tb order by PostTime DESC";
SqlDataAdapter sda = new SqlDataAdapter(sqlStr, sqlCon);
DataSet ds = new DataSet();
sda.Fill(ds, "tb");
Repeater1.DataSource = ds.Tables["tb"];
Repeater1.DataBind();
}
}
:
❀e.CommandName == "sendReply"// repeater "sendRely",
❀Reply='"+((TextBox)e.Item.FindControl("txtReply")).Text// repeater TextBox, TextBox ID="txtReply" , Text