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- ./?%&amp;=]*)?"></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>

  
發佈了46 篇原創文章 · 獲贊 1 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章