如何防止在Gridview建立的控制項在回發後消失

2021-05-21 11:51:52 字數 3058 閱讀 5381

本文主要講述如何實現在標題頭上放乙個按鈕上去,按下去選擇一整個列的功能。用三種方法演示效果。

方法一(較簡單):

使用模板列

html code

<

asp:gridview

id="gridview1"

runat

="server"

autogeneratecolumns

=false

width

="230px"

>

<

columns

>

<

asp:templatefield

>

<

headertemplate

>

<

asp:button

id="button1"

runat

="server"

text

="全選"

onclick

="button1_click"

/>

headertemplate

>

<

itemtemplate

>

<%

#eval("

id") %>

itemtemplate

>

asp:templatefield

>

<

asp:boundfield

datafield

="title"

/>

columns

>

asp:gridview

>

c# code

protected

void

page_load(

object

sender, eventargs e)

}protected

void

button1_click(

object

sender, eventargs e)

else

for(

inti =0

; i

<

gridview1.rows.count; i++)

}方法二(中等難度):

在page_load中的if(!

ispostback){}外邊動態新增控制項

html code

<

asp:gridview

id="gridview1"

runat

="server"

width

="230px"

onrowdatabound

="gridview1_onrowdatabound"

>

asp:gridview

>

c# code

protected

void

page_load(

object

sender, eventargs e)

button bt

=new

button();

//bt.id ="

bt1"

;bt.text ="

測試";bt.commandargument ="

1";bt.click

+=new

eventhandler(bt_click);

gridview1.headerrow.cells[

1].controls.add(bt);

}protected

void

gridview1_onrowdatabound(

object

sender, gridviewroweventargs e)

}protected

void

bt_click(

object

sender, eventargs e)

else

for(

inti =0

; i

<

gridview1.rows.count; i++)

}第三種(有點難度):

使用viewstate儲存序列化後的控制項,在建立時再反序列化

html code

c# code

protected void page_load(object sender, eventargs e)

}protected void gridview1_load(object sender, eventargs e)

else

bt = viewstate["but"] as obutton;

bt.click += new eventhandler(bt_click);

gridview1.headerrow.cells[1].controls.add(bt);

}protected void bt_click(object sender, eventargs e)

else

for (int i = 0; i < gridview1.rows.count; i++)

viewstate["but"] = bt;

}這是重點,重寫button類,並繼承iserializable介面,以實現button的可序列化:

[serializable]

class obutton : button, system.runtime.serialization.iserializable

protected obutton(system.runtime.serialization.serializationinfo info,

system.runtime.serialization.streamingcontext context)

public void getobjectdata(system.runtime.serialization.serializationinfo info,

system.runtime.serialization.streamingcontext context)

如何防止建立的索引失效?

一 在使用索引的時候,需要注意的幾個地方來防止索引的失效 當你使用索引的時候,最好能夠把你建立的索引的字段都給用到。不僅可以提供查詢的效率 最佳左字首法則,意思就是當你如果有建立過多個字段索引的組合索引的時候,最要遵循最左字首法則,就是指當mysql在使用索引查詢的時候不會跳過中間已經建立好的索引列...

動態建立gridview

asp.net 中gridview還是挺好用的,尤其格式的設定對我們這種不會css的人來說很合適。但是有時候需要動態的建立column,而且datasource也需要編輯。下面舉例 1.動態新增column,column為多個日期 介面增加列 true為按周,false為按天 protected v...

在GridView中如何格式化Money型字段

在gridview中如何格式化money型字段?asp gridview id gridview1 runat server autogeneratecolumns false datakeynames pkid datamember defaultview datasourceid sqldata...