一、DAL數據訪問層代碼
1、獲取實體對象
/// <summary>
/// 得到一個對象實體
/// </summary>
public Model.Banqi GetModel(int id)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select top 1 * from banqi");
strSql.Append(" where id=@id");
SqlParameter[] parameters = {
new SqlParameter("@id", SqlDbType.Int,4)};
parameters[0].Value = id;
Model.Banqi model = new Model.Banqi();
DataTable dt = new SqlHelper().ExecuteQuery(strSql.ToString(), parameters, CommandType.Text);
if (dt.Rows.Count > 0)
{
if (dt.Rows[0]["id"].ToString() != "") //這個判斷可以省略,只判斷允許為空的字段
{
model.id = int.Parse(dt.Rows[0]["id"].ToString());
}
model.bqid = dt.Rows[0]["bqid"].ToString();
model.xxdw = dt.Rows[0]["xxdw"].ToString();
model.bqmc = dt.Rows[0]["bqmc"].ToString();
model.zygz = dt.Rows[0]["zygz"].ToString();
model.pxdd = dt.Rows[0]["pxdd"].ToString();
model.skjs = dt.Rows[0]["skjs"].ToString();
model.pxks = DateTime.Parse(dt.Rows[0]["pxks"].ToString());
model.pxjs = DateTime.Parse(dt.Rows[0]["pxjs"].ToString());
model.bqrs = int.Parse(dt.Rows[0]["bqrs"].ToString());
return model;
}
else
{
return null;
}
}
2、更新數據
//更新一條記錄
public bool Update(Model.Banqi model) {
StringBuilder strSql = new StringBuilder();
strSql.Append("update banqi set ");
strSql.Append("bqid=@bqid,");
strSql.Append("xxdw=@xxdw,");
strSql.Append("bqmc=@bqmc,");
strSql.Append("zygz=@zygz,");
strSql.Append("pxdd=@pxdd,");
strSql.Append("skjs=@skjs,");
strSql.Append("pxks=@pxks,");
strSql.Append("pxjs=@pxjs,");
strSql.Append("update_time=@update_time");
strSql.Append(" where id=@id");
SqlParameter[] parameters = {
new SqlParameter("@bqid", SqlDbType.NVarChar,50),
new SqlParameter("@xxdw", SqlDbType.NVarChar,50),
new SqlParameter("@bqmc", SqlDbType.NVarChar,50),
new SqlParameter("@zygz", SqlDbType.NVarChar,50),
new SqlParameter("@pxdd", SqlDbType.NVarChar,50),
new SqlParameter("@skjs", SqlDbType.NVarChar,50),
new SqlParameter("@pxks", SqlDbType.DateTime),
new SqlParameter("@pxjs", SqlDbType.DateTime),
new SqlParameter("@bqrs", SqlDbType.TinyInt),
new SqlParameter("@update_time", SqlDbType.DateTime),
new SqlParameter("@id", SqlDbType.Int,4)
};
parameters[0].Value = model.bqid;
parameters[1].Value = model.xxdw;
parameters[2].Value = model.bqmc;
parameters[3].Value = model.zygz;
parameters[4].Value = model.pxdd;
parameters[5].Value = model.skjs;
parameters[6].Value = model.pxks;
parameters[7].Value = model.pxjs;
parameters[8].Value = model.bqrs;
parameters[9].Value = model.update_time;
parameters[10].Value = model.id;
int res = new SqlHelper().ExecuteNonQuery(strSql.ToString(), parameters, CommandType.Text);
if (res>=1) //更新一條就是=1
{
return true;
}
else
{
return false;
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="banqi_edit.aspx.cs" Inherits="Peixun.Web.banqi_edit" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>班期修改</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
<link rel="stylesheet" href="./css/font.css">
<link rel="stylesheet" href="./css/xadmin.css" />
<script src="./lib/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="./js/xadmin.js"></script>
</head>
<body>
<div class="layui-fluid">
<div class="layui-row">
<form id="form" class="layui-form" runat="server">
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>班期ID
</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtBqid" lay-verify="title" autocomplete="off" class="layui-input"
runat="server"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>請輸入班期ID
</div>
</div>
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>學校單位
</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtXxdw" lay-verify="required" autocomplete="off" class="layui-input"
runat="server"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>請輸入培訓機構院校
</div>
</div>
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>班期名稱
</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtBqmc" lay-verify="required" autocomplete="off" class="layui-input"
runat="server"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>請輸入班期名稱
</div>
</div>
<!--項目開始-->
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>職業工種
</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtZygz" lay-verify="required" autocomplete="off" class="layui-input"
runat="server"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>請輸入職業工種
</div>
</div>
<!--項目結束-->
<!--項目開始-->
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>培訓地點
</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtPxdd" lay-verify="required" autocomplete="off" class="layui-input"
runat="server"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>請輸入培訓地點
</div>
</div>
<!--項目結束-->
<!--項目開始-->
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>授課教師
</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtSkjs" lay-verify="required" autocomplete="off" class="layui-input"
runat="server"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>請輸入授課教師
</div>
</div>
<!--項目結束-->
<!--項目開始-->
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>培訓開始
</label>
<div class="layui-input-inline layui-show-xs-block">
<asp:TextBox ID="txtPxks" runat="server" placeholder="培訓開始日期" lay-verify="date"
autocomplete="off" CssClass="layui-input"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>請輸入培訓開始日期
</div>
</div>
<!--項目結束-->
<!--項目開始-->
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>培訓結束
</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtPxjs" autocomplete="off" class="layui-input" lay-verify="date"
runat="server"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>請輸入培訓結束日期
</div>
</div>
<!--項目結束-->
<!--項目開始-->
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>班期人數
</label>
<div class="layui-input-inline ">
<asp:TextBox ID="txtPxrs" lay-verify="number|Ndouble" autocomplete="off" class="layui-input"
runat="server"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>請輸入培訓人數
</div>
</div>
<!--項目結束-->
<!--按鈕開始-->
<div class="layui-form-item">
<label for="L_repass" class="layui-form-label">
</label>
<asp:Button ID="Button1" runat="server" lay-submit="" lay-filter="add" Text="保存"
CssClass="layui-btn" OnClick="Button1_Click" />
</div>
<!--按鈕結束-->
</form>
</div>
</div>
<script> layui.use(['laydate', 'form'],
function () {
var laydate = layui.laydate;
var form = layui.form
//自定義驗證規則
form.verify({
title: function (value, item) {
if (value.length < 5) {
return '標題至少得5個字符啊';
}
}
, Ndouble: [
/^[1-9]\d*$/
, '只能輸入整數哦'
]
, contact: function (value) {
if (value.length < 4) {
return '內容請輸入至少4個字符';
}
}
, phone: [/^1[3|4|5|7|8]\d{9}$/, '手機必須11位,只能是數字!']
, email: [/^[a-z0-9._%-]+@([a-z0-9-]+\.)+[a-z]{2,4}$|^1[3|4|5|7|8]\d{9}$/, '郵箱格式不對']
});
//監聽提交
form.on('submit(add)', function (data) {
//ajax
//console.log(data.elem) //被執行事件的元素DOM對象,一般為button對象
//console.log(data.form) //被執行提交的form對象,一般在存在form標簽時才會返回
console.log(data.field) //當前容器的全部表單字段,名值對形式:{name: value};獲取單個值data.field["title"]
//sreturn false; //阻止表單跳轉。如果需要表單跳轉,去掉這段即可。
});
//執行一個laydate實例
laydate.render({
elem: '#txtPxks', //指定元素
btns: ['confirm'],
theme: 'grid',
trigger: 'click' //解決日期選擇一閃而過問題
});
//執行一個laydate實例
laydate.render({
elem: '#txtPxjs', //指定元素
trigger: 'click' //解決日期選擇一閃而過問題
});
});
</script>
</body>
</html>
1、根據傳來的參數id,獲取實體對象,將值賦予前臺控件文本屬性。
2、通過前臺JS驗證,修改數據后保存。更新成功后,關閉彈出頁,刷新父窗口。
1.1 輸入關鍵字,通過百度搜索來自指定網站的網頁,如鳳凰網。
1.2 下拉菜單和輸入框組合到一起,即網站地址既可以手動輸入,也可以通過下拉菜單選擇后自動輸入。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script language="javascript" type="text/javascript">
function baiduSearch() {
window.open("http://www.baidu.com/baidu?word=" + formmain.kw.value + "&tn=bds&cl=3&ct=2097152&si=" + formmain.sitesearch.value + "&s=on");
//如果用漢語搜索,關鍵字最好是重新編碼:encodeToGb2312(formmain.kw.value)
}
</script>
<style>
.siteselect{
width:168px;
margin-left:-145px;
margin-left:-146px;
}
.iesitesearch{
font-size:14px;
height:16px;
width:145px;
margin-top:0px;
position:absolute;
left:5px;
}
</style>
<title>站內搜索</title>
</head>
<body>
<form id=formmain onsubmit="return checktype(this); search()" name="f" action=JavaScript:>
關鍵字:<input type="text" size=35 name="wd" id="kw" maxlength="100" title="輸入”搜索詞“,在下面區域單擊某一按鈕,即開始搜索!" /> 網站地址:
<span style="position:relative;">
<span style="margin-left:150px;overflow:hidden;">
<select class="siteselect" onchange="this.parentNode.nextSibling.value=this.value">
<option value="sohu.com">搜狐</option>
<option value="sina.com.cn">新浪</option>
<option value="163.com">網易</option>
<option value="qq.com">騰訊</option>
<option value="ifeng.com">鳳凰網</option>
</select>
</span><input id="sitesearch" name="sitesearch" class="iesitesearch" title="在前面輸入框中輸入“搜索詞“后,在此處可輸入網址(如sina.com.cn,前面不需要http://www.)或選擇某一特定網站,然后單擊“谷歌”或“百度”即可開始定向搜索!";>
<!--</span><input...的內容必須寫成一行,否則下拉菜單中選擇的內容無法顯示到輸入框-->
</span>
<input name="btnG3" type="button" value="百度" onclick="baiduSearch();" class="sitebai" />
</form>
</body>
</html>
搜索后的顯示頁面:
[dependencies]
tokio = { version = "1", features = ["full"] }
lettre = { version = "0.10.4", default-features = false, features = ["smtp-transport", "tokio1-rustls-tls", "hostname", "builder"] }
rusoto_core = { version = "0.48", default-features = false, features = ["rustls"] }
rusoto_ses = { version = "0.48", default-features = false, features = ["rustls"] }
base64 = "0.21"
serde = "1.0"
anyhow = "1.0"
tera = { version = "1", default-features = false }
rc\main.rs
use anyhow::Error;
use lettre::{
transport::smtp::authentication::Credentials, AsyncSmtpTransport, Message, Tokio1Executor,
};
use rusoto_ses::SesClient;
mod ses;
mod smtp;
mod template;
#[tokio::main]
async fn main() -> Result<(), Error> {
// email data
let from = "evil@hacker.com".to_string();
let to = "credule@kerkour.com".to_string();
let subject = "".to_string();
let title = subject.clone();
let content = "".to_string();
// template things
let mut templates = tera::Tera::default();
// don't escape input as it's provided by us
templates.autoescape_on(Vec::new());
templates.add_raw_template("email", template::EMAIL_TEMPLATE)?;
let email_data = tera::Context::from_serialize(template::EmailData { title, content })?;
let html = templates.render("email", &email_data)?;
let email = Message::builder()
.from(from.parse()?)
.to(to.parse()?)
.subject(subject)
.body(html.to_string())?;
// Using SMTP
let smtp_credentials =
Credentials::new("smtp_username".to_string(), "smtp_password".to_string());
let mailer = AsyncSmtpTransport::<Tokio1Executor>::relay("smtp.email.com")?
.credentials(smtp_credentials)
.build();
smtp::send_email(&mailer, email.clone()).await?;
// or using SES
// load credentials from env
let ses_client = SesClient::new(rusoto_core::Region::UsEast1);
ses::send_email(&ses_client, email).await?;
Ok(())
}
src\ses.rs
use lettre::Message;
use rusoto_ses::{RawMessage, SendRawEmailRequest, Ses, SesClient};
use base64::{Engine as _, engine:: general_purpose};
pub async fn send_email(ses_client: &SesClient, email: Message) -> Result<(), anyhow::Error> {
let raw_email = email.formatted();
let ses_request = SendRawEmailRequest {
raw_message: RawMessage {
//data: base64::encode(raw_email).into(),
data: general_purpose::STANDARD.encode(raw_email).into(),
},
..Default::default()
};
ses_client.send_raw_email(ses_request).await?;
Ok(())
}
src\smtp.rs
use lettre::{AsyncSmtpTransport, AsyncTransport, Message, Tokio1Executor};
pub async fn send_email(
mailer: &AsyncSmtpTransport<Tokio1Executor>,
email: Message,
) -> Result<(), anyhow::Error> {
mailer.send(email).await?;
Ok(())
}
src\template.rs
*請認真填寫需求信息,我們會在24小時內與您取得聯系。