1. 程式人生 > >.NET的一些筆記,自己記錄一下

.NET的一些筆記,自己記錄一下

appendto 中文 containe XML rcp reg 繼承 保留 就是

<%: Html.Label("單據名稱:") %>
表示Label控件與此input關聯,點擊label時會觸發此控件 <input type="text" name="SocSecNum" id="單據名稱:" />

現在空閑的
xianzaikongxian

接單最少的
jiedanzhuishao

維修次數最多的
weixiucishu

維修時間最短的
shijianzuidaun

年齡最小的
nianlingzuixiao

還有重復的話就依次從上到下取

UpdateMode="Conditional" ChildrenAsTriggers="false"


<%
if(Detil!=null&&Detil.Rows.Count!=0)
{
for(var n=0;n<Detil.Rows.Count;n++)
{ %>
document.getElementById("List").innerHTML+=‘<li>‘+‘<% =Detil.Rows[n]["Name"]%>‘+‘</li>‘;
<%
if(DetilChild!=null&&DetilChild.Rows.Count!=0)
{
for(var p=0;p<DetilChild.Rows.Count;p++)
{ %>
document.getElementById("List").innerHTML+=‘<li>‘+‘<% =DetilChild.Rows[p]["Name"]%>‘+‘</li>‘;
<% }
}%>
<% }
}%>


<%
if (Detil != null && Detil.Rows.Count != 0)
{
for (int i = 0; i < Detil.Rows.Count; i++)
{ %>
<li id="kkk"><strong><%=Detil.Rows[i]["Name"]%></strong></li>
<%}
} %>

table==null 只是判斷有沒有實例化,並不能作為是否為空表的依據,要用table.rows.count>0。


MFC拼湊sql語句方法
sql_insert.Format(_T("insert into userinfo(name) values (\‘%s\‘);"), name);
std::string s= CStringA(sql_insert);
const char *ch = s.c_str();

MFC獲取其他頁面控件方法
CMCFStudentDlg* pWnd = (CMCFStudentDlg*)GetParent();
CListCtrl *pList=(CListCtrl *)pWnd->GetDlgItem(IDC_LIST1);
UpdateData(TRUE);


遍歷MAP
map<CString,SOCKADDR_IN>::iterator it;
it = Person.begin();
while(it != Person.end())
{
it ++;
m_combo.AddString(it->first);
}


分割字符串
int main(void)
{
char str[] = "2015-3-22,abcd,efg,hij,klmn,opq,rst,uvw,xyz,tao";/*待分隔的原字符串*/
char seg[] = ","; /*分隔符這裏為逗號comma,分隔符可以為你指定的,如分號,空格等*/
char charlist[50][50]={""};/*指定分隔後子字符串存儲的位置,這裏定義二維字符串數組*/
int i =0;
char *substr= strtok(str, seg);/*利用現成的分割函數,substr為分割出來的子字符串*/

while (substr != NULL) {
strcpy(charlist[i],substr);/*把新分割出來的子字符串substr拷貝到要存儲的charlsit中*/
i++;
printf("%s\n", substr);
substr = strtok(NULL,seg);/*在第一次調用時,strtok()必需給予參數str字符串,
往後的調用則將參數str設置成NULL。每次調用成功則返回被分割出片段的指針。*/
}
getchar();/*press enter key to continue*/
return 0;
}


構造函數:
函數名與類名相同,在調用類時會直接默認使用構造函數初始化參數,即使不寫構造函數,系統也會默認給你一個構造函數(類中有虛擬成員,類中有基類有構造函數,靜態成員有構造函數)


構造類時,如果傳入參數與類中參數的參數名相同,則指定類中參數時使用this->x


C++可接受多繼承
class A:public B,public C{ }

虛函數
virtual void breath()
{ }
C++在編譯的時候不綁定breath,會在具體調用的時候確定調用那個方法,如果不加聲明,便會在編譯時進行綁定方法。在C++中加上virtual 來實現多態,在基類中方法上加virtual,在派生類中重寫該函數,運行時將會根據對象的實際類型來調用相應的方法。


純虛函數
virtual void breathe()=0
不實現方法,只是聲明。當有派生類繼承時需要實現純虛函數,否則派生類也只能當做抽象類,不能被實例化


覆蓋和隱藏
覆蓋:函數名相同,參數也相同,函數為虛函數。創建實例對象時,便會把虛函數綁定到實力類中的函數
隱藏:函數不為虛函數,只要函數名相同或者參數也相同,便會隱藏。再派生類中實現基類內被隱藏的函數 基類名::函數名(參數)
函數的重載發生在同一個類中。


int a=3;
int &b=a;
int c=5;
b=c;
則此時a和b值為5;此時a的值也就代表b的值。
int a=3;
int *b=&a;
則此時b為a的儲存地址,即指針,此時再改變b的值也就是改變指針的值,a的值不會改變。


解決頭文件重復定義
在animal.h中添加如下語句
#ifndef ANIMAL_H_H
#define ANIMAL_H_H

static SOCKADDR_IN addrSrv = Person[strCBText];

HWND hWnd = (HWND)FindWindow(NULL,窗口名字);//根據窗口名字Caption獲取窗口句柄
C***Dialog* pWnd= (C***Dialog*)C***Dialog::FromHandle(hWnd); //由句柄得到對話框的對象指針
pWnd->xxx( ); //調用C***Dialog中的函數xxx();
HWND hwnd = pWnd->GetSafeHwnd(); // 取得控件的句柄


Edit Control
獲取指針
pBoxOne = (CEdit*) GetDlgItem(IDC_EDIT1);
賦值
pBoxOne-> SetWindowText( _T("FOO ") );
取值
pBoxOne-> GetWindowText(str);


C++全局變量
.h文件中加
extern CString ToMessage;
.cpp文件中加
CString strCBText;
同一項目下其他文件引用加
.h文件和extern CString strCBText;聲明變量

彈出框搜索修改
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
function search() {
var texts = document.getElementById("pho").value;
var Company = "{‘phoID‘:‘" + texts + "‘}";
$.ajax({
// async: false,
type: "post",
url: "TaskManagementAdd.aspx/search",
data: Company,
contentType: "application/json;charset=utf-8",
dataType: "json",
success: function e(msg) {
var mytab = document.getElementById("table");
var rowNum = mytab.rows.length;

for (var i = 1; i < rowNum; i++) {
mytab.deleteRow(i);
rowNum = rowNum - 1;
i = i - 1;
}
var word = msg.d.split(";");
if (msg.d.split(",").length > 2) {
for (var tt = 0; tt < word.length; tt++) {
var words = word[tt].split(",");
var tabRow = mytab.insertRow(tt + 1);
tabRow.setAttribute("style", "text-align: center");
tabRow.insertCell(0).innerHTML = ‘<tr style="text-align: center" ><td><input id="‘ + words[2] + ‘" name="User" type="radio" /></td>‘;
tabRow.insertCell(1).innerHTML = ‘<td >‘ + words[0] + ‘</td>‘;
tabRow.insertCell(2).innerHTML = ‘<td >‘ + words[1] + ‘</td>‘;
}
}
else {
var words = msg.d.split(",");
var tabRow = mytab.insertRow(1);
tabRow.setAttribute("style", "text-align: center");
tabRow.insertCell(0).innerHTML = ‘<td><input id="‘ + words[2] + ‘" name="User" type="radio" /></td>‘;
tabRow.insertCell(1).innerHTML = ‘<td >‘ + words[0] + ‘</td>‘;
tabRow.insertCell(2).innerHTML = ‘<td >‘ + words[1] + ‘</td> </tr>‘;
}
// mytab.rows[0].cells[0].innerHTML = msg.d;
},
error: function (xhr) { alert(‘頁面出錯\n\n‘ + xhr.responseText); }
});
}

獲取彈出框選中的值
function sub() {
var s = ‘‘;
var obj = document.getElementsByName(‘User‘);
for (var i = 0; i < obj.length; i++) {
if (obj[i].checked)
{ s = obj[i].id; }
}
var Name = $("#" + s).parent().next().text();
var Phone = $("#" + s).parent().next().next().text();
document.getElementById("TUser").value = Name;
}

js獲取select標簽選中的值
var obj = document.getElementByIdx_x(”testSelect”); //定位id
var index = obj.selectedIndex; // 選中索引
var text = obj.options[index].text; // 選中文本
var value = obj.options[index].value; // 選中值
jQuery中獲得選中select值

第一種方式
$(‘#testSelect option:selected‘).text();//選中的文本
$(‘#testSelect option:selected‘) .val();//選中的值
$("#testSelect ").get(0).selectedIndex;//索引

第二種方式
$("#tesetSelect").find("option:selected").text();//選中的文本
…….val();
…….get(0).selectedIndex;

彈出框不好用
ScriptManager.RegisterStartupScript(this, this.GetType(), "", "alert(‘賬戶余額不足‘);", true);
後臺隱藏某個元素
ScriptManager.RegisterStartupScript(this, this.GetType(), "", "$(function () { $(\".qbm-notice\").css(\"display\", \"none\");})", true);


數據庫不能識別漢字,在設置連接字符串時最後加上:Charset=utf8


如何在自定義類中使用ASP.NET的Request,server 等對象:
加命名空間(可能需要在項目中先加引用,再在類中如下引用)
using System.Web.SessionState;
HttpContext.Current.Session["TotalPage"].ToString();
HttpContext.Current.Request.QueryString["cid"].ToString();


ajax的使用


界面上必須引用jquery.min.js
<script type="text/javascript">
function Sub(){
// $(document).click(function (e) {
// var name=$(e.target).parent().prev().prev().prev().prev().prev().prev().prev().text();
// var p = $(e.target).attr("id");
var p = ‘u‘;
var params = ‘{IP:"‘ + p + ‘"}‘;
// var params = ‘{name1:"‘ + name + ‘",phone1:"‘ + phone + ‘"}‘;
$.ajax({
type: "post",
url: "Phone.aspx/Submit",
data: params,
contentType: "application/json;charset=utf-8",
dataType: "json",
success: function e() {
// shanchu.remove();
alert("操作成功!");
},
error: function () { alert("llll"); }
});
// })
}
</script>

由後臺返回的值分割
success: function e(msg) {
var Name = document.getElementById("StuName");
var strs = msg.d.split(";"); //字符分割
for (var i = 0; i < strs.length; i++) {
if (strs[i] != "") {
Name.innerHTML += ‘<li class=\"flex bd-lis\" ><section class=\"iconfont icon-yuanxingweixuanzhong bd-a\"></section><section class=\"bd-b\"></section><section class=\"bd-c\">‘ + strs[i].toString() + ‘</section><section class=\"bd-d iconfont icon-xiangyou1\"></section></li>‘;
}
}
},
error: function () { alert("llll"); }

後臺


[System.Web.Services.WebMethod()]
public static void Submit(string IP)
{

}


獲取當前click事件元素的id:
$(".bl").click(function (e) {
window.location.href = "NoticeDetil.aspx?ID=" + $(this).attr("id");
})

預加載修改頁面

$(function(){
var Detile=‘<%=NoticeDeilStr%>‘;
var strs = Detile.split(";");
$("#NoticeType").append(strs[0]);
$("#NoticeTitle").html(strs[1]);
$("#StartTime").html(strs[2]);
$("#OverTime").html(strs[3]);
$("#StopTime").html(strs[4]);
$("#NoticeContent").html(strs[5]);
})

當需要多個表的信息時,不必要分多次查詢,可以使用左右或內連接將數據放在一起。
SELECT t1.ID,t2.ID as PP,t1.phone as tt FROM ((select * from `user` where ID=‘ee‘) t1 LEFT JOIN (select * from `user` where roleID =‘1‘) t2 on t1.classID=t2.classID)


傳遞點擊對象:

onclick="Sub(this)"

接收:function Sub(obj) {
var p = $(obj).prev().attr("id");
}

Ajax按鈕跳轉時,只能用button屬性,不要用submit

C# 中的cookies


設置
HttpCookie cookie = new HttpCookie("cookieName");
cookie.Value = "name1"
HttpContext.Current.Response.Cookies.Add(cookie);
HttpContext.Current.Response.AppendCookie(cookie);
讀取
HttpContext.Current.Request.Cookies["cookieName"].Value
判斷存在
if(HttpContext.Current.Request.Cookies["cookieName"]==null){
//do something
}
有效期
cookie.Expires = DateTime.Now.AddDays(1);


獲取dropdownlist選中的值
ddlBranch.SelectedValue;
獲取dropdownlist選中的文本
ddlCurrentDegree.SelectedItem.Text;

<system.data>
<DbProviderFactories>
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>

獲取XML節點值
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(jsonText);
//獲取節點列表
XmlNodeList topM = xmldoc.ChildNodes;
foreach (XmlElement element in topM)
{
id = element.GetElementsByTagName("prepay_id")[0].InnerText;
sig = element.GetElementsByTagName("sign")[0].InnerText;
nonce_str = element.GetElementsByTagName("nonce_str")[0].InnerText;
}


在子元素中防止觸發父元素點擊事件

event.stopPropagation(); //阻止事件冒泡即可


顯示全屏
HTML:

<div class="over"></div><!--背景層-->
<div class="logoImg amplifyImg"><!--註意:此處的amlifyImg不可少-->
<img src="imgSrc"/>
</div>


CSS:
.over {position: fixed; left:0; top:0; width:100%; z-index:100;}
.tempContainer {position:fixed; width:100%; margin-right:0px; margin-left:0px; text-align:center; z-index:101;}


JS:
var imgsObj = $(‘.amplifyImg img‘);//需要放大的圖像
if(imgsObj){
$.each(imgsObj,function(){
$(this).click(function(){
var currImg = $(this);
coverLayer(1);
var tempContainer = $(‘<div class="tempContainer"></div>‘);//圖片容器
with(tempContainer){//width方法等同於$(this)
appendTo("body");
var windowWidth=$(window).width();
var windowHeight=$(window).height();
//獲取圖片原始寬度、高度
var orignImg = new Image();
orignImg.src =currImg.attr("src") ;
var currImgWidth= orignImg.width;
var currImgHeight = orignImg.height;
if(currImgWidth<windowWidth){//為了讓圖片不失真,當圖片寬度較小的時候,保留原圖
if(currImgHeight<windowHeight){
var topHeight=(windowHeight-currImgHeight)/2;
if(topHeight>35){/*此處為了使圖片高度上居中顯示在整個手機屏幕中:因為在android,ios的微信中會有一個title導航,35為title導航的高度*/
topHeight=topHeight-35;
css(‘top‘,topHeight);
}else{
css(‘top‘,0);
}
html(‘<img border=0 src=‘ + currImg.attr(‘src‘) + ‘>‘);
}else{
css(‘top‘,0);
html(‘<img border=0 src=‘ + currImg.attr(‘src‘) + ‘ height=‘+windowHeight+‘>‘);
}
}else{
var currImgChangeHeight=(currImgHeight*windowWidth)/currImgWidth;
if(currImgChangeHeight<windowHeight){
var topHeight=(windowHeight-currImgChangeHeight)/2;
if(topHeight>35){
topHeight=topHeight-35;
css(‘top‘,topHeight);
}else{
css(‘top‘,0);
}
html(‘<img border=0 src=‘ + currImg.attr(‘src‘) + ‘ width=‘+windowWidth+‘;>‘);
}else{
css(‘top‘,0);
html(‘<img border=0 src=‘ + currImg.attr(‘src‘) + ‘ width=‘+windowWidth+‘; height=‘+windowHeight+‘>‘);
}
}
}
tempContainer.click(function(){
$(this).remove();
coverLayer(0);
});
});
});
}
else{
return false;
}
//使用禁用蒙層效果
function coverLayer(tag){
with($(‘.over‘)){
if(tag==1){
css(‘height‘,$(document).height());
css(‘display‘,‘block‘);
css(‘opacity‘,1);
css("background-color","#191919");
}
else{
css(‘display‘,‘none‘);
}
}
}

寫入前臺js

StringBuilder sb = new StringBuilder();
sb.Append("<script src=\"js/jquery-weui.js\"></script>;");
ClientScript.RegisterStartupScript(this.GetType(), "LoadPicScript", sb.ToString());


蘋果微信返回不重新加載js


<input type="hidden" id="refreshed" value="no">


if ((/iphone|ipod|ipad.*os 5/gi).test(navigator.appVersion)) {

window.onpageshow = function (event) {

if (event.persisted) {

window.location.reload()

}

};

} else {

onload = function () {

var refreshedId = document.getElementById("refreshed");

if (refreshedId.value == "no") {

refreshedId.value = "yes";

} else {

refreshedId.value = "no";

location.reload();

}

}

}

服務器控件添加前臺JS事件


Button1.Attributes.Add("OnClick", "return load()");
函數返回true則繼續執行後臺點擊事件
函數返回false則只執行前臺JS事件

.NET的一些筆記,自己記錄一下