asp.net|編程|程式
1、綁定在DataList中的DropDownList
private void dlistOrder_EditCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
//綁定訂單狀態
for(int i=0;i<((DropDownList)dlistOrder.Items[e.Item.ItemIndex].FindControl("ddlFlag")).Items.Count;i++)
{
if(((DropDownList)dlistOrder.Items[e.Item.ItemIndex].FindControl("ddlFlag")).Items[i].Value == dv.Table.Rows[0]["OrStatus"].ToString())
{
((DropDownList)dlistOrder.Items[e.Item.ItemIndex].FindControl("ddlFlag")).Items[i].Selected = true;
}
}
}
2、另一種綁定方式
//綁定發貨方式
DataView shipType = OrderSO.GetShipTypeList();
DropDownList ddlShipType = (DropDownList)dlistOrder.Items[e.Item.ItemIndex].FindControl("ddlShipType");
ddlShipType.DataSource = shipType;
ddlShipType.DataTextField = "StName";
ddlShipType.DataValueField = "StId";
ddlShipType.DataBind();
ddlShipType.SelectedIndex = ddlShipType.Items.IndexOf(ddlShipType.Items.FindByValue(dv.Table.Rows[0]["OrShipType"].ToString()));
3、在編輯嵌套在Datalist內的Datagrid某條記錄時定位它所在的Datalist行
protected void MyList_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
HtmlInputHidden odid = (HtmlInputHidden) e.Item.Cells[0].FindControl("odid");
DataListItem item = (DataListItem)e.Item.Parent.Parent.Parent;
DropDownList flag = (DropDownList)item.FindControl("ddlFlag");
if(flag.SelectedIndex == 0)
{
if(e.CommandName == "Delete")
{
int iOdId = Convert.ToInt32(odid.Value);
//刪除訂單明細方法
OrderSO.DeleteOrderDetail(iOdId);
}
}
else
{
GDCIC.Framework.Utility.MessageBox(this,"modifyError","經過確認的訂單不能再修改!!");
return;
}
dlistOrder.EditItemIndex = -1;
BindData();
}
}
4、DataBinding綁定運算式:
1) 普通的綁定運算式
<%# DataBinder.Eval(Container.DataItem, "ContactName") %>
2) 文本+綁定運算式
<asp:Label id=lblDate runat="server" Text='<%# "[" + DataBinder.Eval(Container, "DataItem.NewsCreatedate") + "]" %>' ForeColor="Red"></asp:Label>
3) 同時帶有顯示格式的綁定運算式
<%# DataBinder.Eval(Container,"DataItem.USActiveDate","{0:yyyy-MM-dd}") %>
4) 結合綁定運算式和模態框
<A href='<%# ShowModalWin(Convert.ToString(DataBinder.Eval(Container.DataItem, "PictureImage")),Convert.ToString(DataBinder.Eval(Container.DataItem, "DetailID")),Convert.ToString(DataBinder.Eval(Container.DataItem, "PictureID")))%>'>
其中:後台代碼檔案中ShowModalWin()方法的定義如下:
protected string ShowModalWin(string PictureImage,string DetailID,string PictureID)
{
return " window.showModalDialog(\"Customers/ShowPictureInfo.aspx?pid="+PictureImage+"&did="+DetailID+"&id="+PictureID+"\",\"\",\"dialogHeight:320px;dialogWidth:480px;center:yes;help:no;status:no;scroll:no\");";
}
或者將參數提取出來單獨定義成一變數:
const string WINDOWPARAMSTRING="dialogWidth:540px;dialogHeight:420px;help:0;status:0;resizeable:1;scroll:no";
Page.RegisterStartupScript("functionscript","<script language='javascript'>window.showModalDialog('EditUserService.aspx?URID="+iURID+"','','"+WINDOWPARAMSTRING+"')</script>");
5、在已有的資料集中添加一個新行
int iURID=int.Parse(Session[Globals.USER_ID_SESSION_NAME].ToString());
DataSet myds=UserSO.GetMapUserServiceToServiceList(iURID);
//增加一個郵件行
DataRow mydr = myds.Tables[0].NewRow();
mydr["SVHref"] = "http://211.155.23.77";
mydr["SVName"] = "政務郵箱";
mydr["USEndDate"] = System.DateTime.Now.AddDays(1);
myds.Tables[0].Rows.Add(mydr);
DataView mydv=myds.Tables[0].DefaultView;
if(myds.Tables[0].Rows.Count!=0)
{
mydv.RowFilter=" USEndDate>'"+System.DateTime.Now+"'";// 沒到期
dgUserService.Visible=true;
dgUserService.DataSource =mydv;
try
{
dgUserService.DataBind();
}
catch
{
dgUserService.CurrentPageIndex =dgUserService.PageCount -1;
dgUserService.DataBind();
}
}
else
{
dgUserService.Visible=false;
}
6、加入用戶端驗證控制項
//驗證空值
<asp:requiredfieldvalidator id="valUsername" runat="server" controltovalidate="txtUsername" display="None" errormessage="請輸入使用者名稱 !!"></asp:requiredfieldvalidator>
//驗證網址
<asp:regularexpressionvalidator id="rev" runat="server" ErrorMessage="公司網址不合法[要有http://] !" Display="None" ControlToValidate="txtCPWebsite" ValidationExpression="http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?"></asp:regularexpressionvalidator>
//驗證郵箱
<asp:RequiredFieldValidator id="rfv" runat="server" ControlToValidate="txtCPEmail" Display="None" ErrorMessage="請輸入電子郵箱 !!"></asp:RequiredFieldValidator>
//驗證郵編
<asp:regularexpressionvalidator id="rev5" runat="server" ErrorMessage="郵遞區號不合法 !" Display="None" ControlToValidate="txtCPPostCode" ValidationExpression="\d{6}"></asp:regularexpressionvalidator>
//顯示錯誤資訊
<asp:validationsummary id="vs" runat="server" ShowSummary="False" ShowMessageBox="True"></asp:validationsummary>
7、枚舉類型的使用
1) 定義:
public enum UserTypeEnum:byte
{
/// <summary>
/// 個人使用者
/// </summary>
Individual = 0,
/// <summary>
/// 單位使用者
/// </summary>
Corporation = 1
}
2) 在代碼中的使用方法:
UserTypeEnum ut = UserTypeEnum.Corporation;
GDCIC.Entities.UserVO userVO = GDCIC.Facade.UserSO.GetUserVO(urid);
ut = (UserTypeEnum)Enum.Parse(UserTypeEnum.Corporation.GetType(),userVO.URUserType);
if (ut == UserTypeEnum.Corporation)
{
... ...
}
//直接獲得其代表的值的方法
Response.Write("枚舉值為:"+Convert.ToInt32(UserTypeEnum.Individual));
8、驗證使用者名稱必須以字母打頭且不能含有中文
String sUsername = txtUsername.Text.Trim();
if(!Regex.IsMatch(sUsername, "^[A-Za-z].*"))
{
Utility.MessageBox(this,"nameFormatError","使用者名稱要以字母開頭, 且不要用中文名稱 !!");
return;
}
9、如何在刪除並重新安裝 IIS 之後修複 IIS 映射
運行 Aspnet_regiis.exe 工具 + 生產力:
1、
單擊“開始”,然後單擊“運行”。
在“開啟”框中,鍵入 cmd,然後按 Enter 鍵。
在命令提示字元下鍵入以下命令,然後按 Enter 鍵:
"%windir%\Microsoft.NET\Framework\版本\aspnet_regiis.exe" -i
2、在此路徑中,版本代表在伺服器上安裝的 .NET Framework 的版本號碼。鍵入此命令時,必須將此預留位置替換為實際版本號碼。
註冊 Aspnet_isapi.dll;
單擊“開始”,然後單擊“運行”。
在“開啟”文字框中,鍵入以下內容,然後按 Enter 鍵:
regsvr32 %windir%\Microsoft.NET\Framework\版本\aspnet_isapi.dll
Regsvr32 將返回註冊結果。
10、下載檔案的方法:
Response.AppendHeader("content-disposition", "attachment; filename=" + Request.Params("link").ToString)
Response.ContentType = Request.Params("contenttype").ToString
Response.WriteFile(strLink)
Response.End()
可從資料中讀出檔案名稱,直接指定到伺服器的路徑下即可,所以要求上傳檔案時`需求指定檔案在伺服器上儲存的路徑。
對於此方法,需要重新導向到一個頁面,此頁面負責處理檔案的寫入。參數contenttype可以選擇寫或不寫,在明確的情況下,最好寫入。
但appendheader必須寫明,最後調用WriteFile將檔案輸出,用到的路徑是相對路徑。
11、如何在動態載入控制項時,讓用戶端指令碼起作用
event.srcElement,可以得到事件引發者對象。對於要求引用多個對象時,可以用一變數將控制項值儲存起來。
方法如下:
Response.Write("<input type=\"hidden\" id=\"jjj\" value="+this.ClientID+">");
註:此處此控制項的ID號為固定值。
12、如何在IIS上註冊aspnet
aspnet_regIIS -i
13、Server對象
1) Server.Transfer: 轉到另一頁面,但沒有向瀏覽器發送任何資訊,當使用者重新整理時,將重新整理的是重新導向之前的那一頁。
2) Server.Execute: 執行另一頁面的請求,執行之後返回原來的頁面。
14、禁用請求驗證的方法
請求驗證過程檢測到有潛在危險的用戶端輸入值,對請求的處理已經中止。該值可能指示危及應用程式安全的嘗試,如跨網站的指令碼攻擊。通過在 Page 指令或 配置節中設定 validateRequest=false 可以禁用請求驗證。但是,在這種情況下,強烈建議應用程式顯式檢查所有輸入。
如:<system.web>
<pages ValidateRequest="false" />
</system.web>