ASP.NETプロジェクト申告システム-4.20~4.27まとめ

19275 ワード

4.20
GridViewのRowDataBoundイベントでデータ列かどうかを判断する文はif(e.Row.RowType==DataControlRowType.DataRow)//データ列を判断する文は他に書いてもダメです.
動的バインドGridViewのHyperLinkのNavigateUrl:
//      

<asp:HyperLinkField DataTextField="ProjName" HeaderText="    " NavigateUrl="a.aspx">

                <HeaderStyle Width="20%" />

                <ItemStyle Width="20%" CssClass="content" />

                </asp:HyperLinkField> 



//        

protected void GridViewProjView_RowDataBound(object sender, GridViewRowEventArgs e)

    {

        if (e.Row.RowType == DataControlRowType.DataRow)//        

        {

            HyperLink link = (HyperLink)e.Row.Cells[2].Controls[0];

            if (e.Row.Cells[7].Text == "   ")

            {

                link.NavigateUrl = "ProjInfo.aspx?projid=" + e.Row.Cells[1].Text;

            }

            else

            {

                link.NavigateUrl = "ProjInfo2.aspx?projid=" + e.Row.Cells[1].Text;

            }

            e.Row.Cells[3].ToolTip = e.Row.Cells[3].Text;

            e.Row.Cells[4].ToolTip = e.Row.Cells[4].Text;

            e.Row.Cells[5].ToolTip = e.Row.Cells[5].Text;

            e.Row.Cells[7].ToolTip = e.Row.Cells[7].Text;

        }

    }

4.22
VSの下で正規表現で検索と置換すると便利です.
vsにはwdsのような正規表現はないので、できるだけ他の方法で表すようにします.例えば、dは[0-9]と書きます.vsのスペースは直接1つのスペースでいいので、sでは表しません.[,],<,>,{,},(,)など、これらは特殊な意味を持つ文字であり、これらの文字自体に一致するには、前にエスケープ文字を付ける必要があります.例えば、[一致[.MSDNにはvsレプリケーション置換の特殊な記号を含む完全な情報があります.
検索内容:Label{.*}Label{Proj[^Y].*}Label置換:TextBox1 TextBox2 TextBox2 TextBox
asp
検索内容:{ProjBegin}{[0-9]+}{".*"}置換:123 onchange="changeProjYear(2)"
置換:
 
JAvascriptのsubstring(int a,int b)は、a番目の文字からb番目の文字(b番目の文字を含まない)までをとるサブ列であり、2番目のパラメータはオプションであり、このパラメータなしで末尾を表す.C#のSubstring(int a,int b)は、a番目の文字から始まり、長さb番目の文字をとるサブストリングであり、同様に2番目のパラメータはオプションであり、このパラメータは末尾まで表示されない.
 
Label(spanに変換)を変更するには、クライアントにvalue属性のコントロールがない場合はdocumentを使用します.getElementById('<%=ControlID.ClientID%>').innerText='value'innerHtmlはinnerTextの代わりに使用できます.buttonはクライアントにvalue属性があり、直接この属性を使用し、innerTextやinnerHtmlを使用しないでください.そうしないと、エラーや修正が成功しません.
 
GridViewのHyperLink(またはHyperLinkField、実際にはHyperLinkに変換)は、バックグラウンドでコンテンツを取得し、GridViewUsrManagementを使用することはできません.Rows[i].Cells[1].Textでは、HyperLink=(HyperLink)GridViewUsrManagementを使用します.Rows[i].Cells[1].Controls[0]; ...=link.Text;
 
4.23
サーバコントロール、visibleがfalseに設定された後、ブラウザ側には表示されません.コントロールを非表示にしたい場合は、サーバ側で変更せずにクライアントonloadでコントロールを取得し、styleを設定します.display="none";あるいは、フロントで、そのtdにstyle=「display:none」と書きます.
 
4.24
C#でTableの行を動的に追加するには:
//    

using System.Web.UI.HtmlControls;



private void CreateTableRow(News news,int range)

    {

        for (int i = 1; i <= range; i++)

        {

            HtmlTableCell cell1 = new HtmlTableCell();

            cell1.InnerHtml = i.ToString();//  

            cell1.Style.Add("text-align", "center");

            HtmlTableCell cell2 = new HtmlTableCell();

            cell2.InnerHtml = GetAttach(news, i);//    

            cell2.Style.Add("text-align", "center");

            HtmlTableCell cell3 = new HtmlTableCell();

            Button buttondel = new Button();

            buttondel.ID = "ButtonDel" + i.ToString();

            buttondel.Text = "  ";

            if (news.NewsEditor != Convert.ToInt32(Session["UsrID"]))//     disable, pageload    

            {

                buttondel.Enabled = false;

            }

            buttondel.OnClientClick = "return confirm('       ?');";

            cell3.Controls.Add(buttondel);//    

            buttondel.Click += new EventHandler(ButtonDel_Click);

            cell3.Style.Add("text-align", "center");

            HtmlTableRow row = new HtmlTableRow();

            row.Cells.Add(cell1);

            row.Cells.Add(cell2);

            row.Cells.Add(cell3);

       //FileTable      table id, table    runat='server'  ,        

            FileTable.Rows.Insert(i, row);

        }

    }



//         

private string GetAttach(News news,int n)

    {

        string part="";

        switch (n)

        {

            case 1: part = news.NewsAttach1; break;

            case 2: part = news.NewsAttach2; break;

            case 3: part = news.NewsAttach3; break;

            case 4: part = news.NewsAttach4; break;

            case 5: part = news.NewsAttach5; break;

            case 6: part = news.NewsAttach6; break;

            case 7: part = news.NewsAttach7; break;

            case 8: part = news.NewsAttach8; break;

            case 9: part = news.NewsAttach9; break;

            case 10: part = news.NewsAttach10; break;

            case 11: part = news.NewsAttach11; break;

            case 12: part = news.NewsAttach12; break;

            case 13: part = news.NewsAttach13; break;

            case 14: part = news.NewsAttach14; break;

            case 15: part = news.NewsAttach15; break;

            default: break;

        }

        return part;

    }



//           

protected void ButtonDel_Click(object sender, EventArgs e)

{

...

}

 
javascriptでfile uploadでクライアントファイルのパスを取得するとfakepathの問題が発生します.すなわち、本来c:/usr/mashu/a.docにはc:/fakepath/a.docが表示されます(IE 9ではそうです).これは、jsがローカルファイルシステム構造を取得できないように、クライアントブラウザのセキュリティを考慮したものです.また、FileUploadはサーバ側でもクライアントのファイルの完全urlを取得することができず、FileUpload 1.FileNameではファイル名のみが使用できます.ファイルパスではありません.jsを解決してファイルパスを取得する方法は、IEの設定を変更することです:インターネットオプション--セキュリティ--カスタムレベル--ファイルをサーバーにアップロードするときにローカルディレクトリパスを含む.--ポイントで有効にします.
 
JAvascriptでbuttonが表示され、非表示になります.非表示:button 1.style.display="none"表示:button 1.style.display="block"
 
クライアントでファイルのサイズを計算するには、fso=new ActiveXObject(「Scripting.FileSystemObject」)が必要です.これはieがactivexのセキュリティオプションをオンにする必要がありますが、オンにするとie 9は下に安全ではないことを示し、win 7の下の旗も安全ではないことを示すので、クライアントjsでファイルのサイズを計算することを放棄します.
 
4.25
LinkButtonをクライアントでリンクとして機能させるには、【新規メッセージなし】
 
jsはページコントロールの遍歴を行う:
//javascript       textbox,    。

var anyInput=document.getElementsByTagName("input");

for(var i=0;i<anyInput.length;i++){

  if(anyInput[i].type=="text"){// text  checkbox    checkbox

      ...

   }

}

//       select  (     dropdownlist),    。

var anySelect=document.getElementsByTagName("select");

for(var i=0;i<anySelect.length;i++){

    ...

}

//  checkbox      ,  obj   this:

var elem = obj.form.elements;

    var flg = 0;

    for (var i = 0; i < elem.length; i++) {

        if (elem[i].type == "checkbox") {

               ...

        }

    }

onchangeイベントをサポートするHTMLタグ:,