Selectした値を使ってInsertする
テーブル名:Table1
列名1:code varchar(3)
列名2:kanrencode varchar(5)
というテーブルがあるとする。
新しいcodeのデータを登録する際、
既に登録してあるcodeのkanrencodeと全く同じ値を登録したい場合、
以下のように記述。
insert into Table1
select '123',kanrencode from Table1
where code = '000'
GridView.TemplateField内のコントロールのClientIDをjavascript(クライアントサイド)で使いたい。
サーバ側のPage_Loadで、
ClientScript.RegisterArrayDeclarationメソッドを使う。
(このメソッドはjavascriptの配列を作成し、ページに埋め込んでくれる)
GridViewの行をfor文でループさせて追加していく。
foreach (GridViewRow row in gvSyohin.Rows)
{
ClientScript.RegisterArrayDeclaration(
"arrayExample", //配列名
"'" + row.FindControl("対象コントロール名").ClientID + "'" //配列の値
);
}
詳しくはこちら
⇒http://japan.internet.com/developer/20060801/26.html
AutoCompleteExtenderで幅の指定
通常は、TargetControlIDプロパティでセットされたTextBoxと同じ幅になる。
それを変えたい場合は、
CompletionListCssClassプロパティでCSSのクラスをセットし、
そのCSSで、
min-width : 400px(任意の幅);
と指定する。
AutoCompleteExtenderのプロパティ
CompletionListCssClass="css1"
<style type="text/css">
<!--
.css1{
border: 1px solid gray;
background-color: white;
padding: 0;
margin: 0;
list-style: none;
z-index: 10000;
min-width : 400px;
}
-->
</style>
AutoCompleteExtenderで、textとvalueを別々にしたい!
リストに表示される値とは別にvalue値を保持しておきたい。
その場合は、ServiceMethodプロパティにセットしたメソッド内にて、
AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem(<text>,<value>)メソッドを使う。
以下、リストを選択したら、textとvalueをalert表示するサンプル。
ちなみにこのまま書いても動きません。TargetControlを設定してください。
【WEBサービス】
[WebMethod()]
public String GetCompletionList(String prefixText, int count)
{
string list = new string[count];for (int i = 0; i < count; i++)
{
list[i] = AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem
(prefixText + "の" + i.ToString() + "番目", //リストに表示されるテキスト
i.ToString() //value値(リストには表示されない)
);
}return list;
}
【ASPXソース】
<ajaxToolkit:AutoCompleteExtender runat="server"
OnClientItemSelected = "IAmSelected"
ServiceMethod = "GetCompletionList"
...>
【javascript】
function IAmSelected( source, eventArgs ) {
alert( " text : "+ eventArgs.get_text() +" value : " + eventArgs.get_value());
}
参考:How to : Use a Key Value Pair in your AutoCompleteExtender
window.onloadが動かない時はこれを使う!ASP.NET Ajax
javascriptでwindow.onloadを使っているけれども、
部分更新した場合に、window.onloadで書いたスクリプトが動かない。
ScriptManager.RegisterStartupScript メソッドを使ってもどうもうまくいかない。
そんな時は
<script type="text/javascript">
function pageLoad() {
//window.onloadで設定した関数とか、行いたい処理
}
</script>
を使う。
このfunction pageLoad()というのは、ASP.NETが既定としている関数。
クライアントサイドのPage_Loadメソッドのようなもの。
Application.Loadハンドラとして動作する。
Ajaxを利用している場合は、window.onloadではなくpageLoad()を使った方が良い。
pageLoad()は部分更新にも適用されるため。
参考:
http://encosia.com/simplify-aspnet-ajax-client-side-page-initialization/
Sessionの状態管理のおはなし
自分用メモ。わかりやすい。重要。
textboxでのEnterキー押下でSubmit(実行)させない!
EnterキーでのSubmitは、便利な時もあれば、迷惑な時もある。
迷惑な時には、この方法で抑止。
http://www.programming-magic.com/20080119212425/
"MSDNに書いてある方法"だと、
Firefoxの時に効かなくて困っていたけれど、上記の方法なら大丈夫だった。