做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

asp.net 動(dòng)態(tài)創(chuàng)建TextBox控件及狀態(tài)數(shù)據(jù)如何加載

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:42:10
文檔

asp.net 動(dòng)態(tài)創(chuàng)建TextBox控件及狀態(tài)數(shù)據(jù)如何加載

asp.net 動(dòng)態(tài)創(chuàng)建TextBox控件及狀態(tài)數(shù)據(jù)如何加載:接著上文Asp.net TextBox的TextChanged事件你真的清楚嗎? 這里我們來說說狀態(tài)數(shù)據(jù)時(shí)如何加載的。雖然在Control中有調(diào)用狀態(tài)轉(zhuǎn)存的方法,但是這里有一個(gè)判斷條件 if (_controlState >= ControlState.ViewStateLoaded) 一般的g
推薦度:
導(dǎo)讀asp.net 動(dòng)態(tài)創(chuàng)建TextBox控件及狀態(tài)數(shù)據(jù)如何加載:接著上文Asp.net TextBox的TextChanged事件你真的清楚嗎? 這里我們來說說狀態(tài)數(shù)據(jù)時(shí)如何加載的。雖然在Control中有調(diào)用狀態(tài)轉(zhuǎn)存的方法,但是這里有一個(gè)判斷條件 if (_controlState >= ControlState.ViewStateLoaded) 一般的g

接著上文Asp.net TextBox的TextChanged事件你真的清楚嗎? 這里我們來說說狀態(tài)數(shù)據(jù)時(shí)如何加載的。
雖然在Control中有調(diào)用狀態(tài)轉(zhuǎn)存的方法,但是這里有一個(gè)判斷條件 if (_controlState >= ControlState.ViewStateLoaded) 一般的get請(qǐng)求這里的條件是不滿足的。
代碼如下:
internal enum ControlState
{
Constructed,
FrameworkInitialized,
ChildrenInitialized,
Initialized,
ViewStateLoaded,
Loaded,
PreRendered
}

我們知道在page的ProcessRequest中this.ControlState = ControlState.FrameworkInitialized;ProcessRequestMain方法中在Init后有調(diào)用this.InitRecursive(null);在這個(gè)方法里面有這么一句_controlState = ControlState.Initialized;,在LoadAllState()方法中有這么一句 base.LoadViewStateRecursive(second.Second);,而LoadViewStateRecursive中又有_controlState = ControlState.ViewStateLoaded這句帶代碼,所以我們?cè)赑age_load中動(dòng)態(tài)條件控件時(shí), if (_controlState >= ControlState.ViewStateLoaded)條件成立,如圖:

所以在運(yùn)行this.form1.Controls.Add(txt);這句以前,txt的值為demo1,

如圖


但是運(yùn)行以后之就發(fā)生變化了:

當(dāng)然這里的txt.Text值也是我上次post過來的舊值,新值是在控件的LoadPostData方法中重新綁定。在默認(rèn)的LoadViewStateRecursive方法中有一個(gè)很重要的判斷
代碼如下:
internal void LoadViewStateRecursive(object savedState) {
// nothing to do if we have no state
if (savedState == null || flags[disableViewState])
return;

。。。。

_controlState = ControlState.ViewStateLoaded
}

大家看到我上面是一個(gè)CustTextBoxt : TextBox控件,如果我們直接添加TextBox控件的話,那么著這里的txt.Text一直都是demo1,可見控件動(dòng)態(tài)添加的時(shí)候是否加載狀態(tài)數(shù)據(jù)與狀態(tài)數(shù)據(jù)的保存有關(guān)。而狀態(tài)數(shù)據(jù)的保存主要就是SaveViewState完成的,這里我第一次post的時(shí)候SaveViewState返回?cái)?shù)據(jù):

所以第二次能取到上次post過來的數(shù)據(jù)。

其中與SaveViewState有關(guān)的方法主要有:
代碼如下:
public class TextBox : WebControl, IPostBackDataHandler, IEditableTextControl {
protected override object SaveViewState() {
if (SaveTextViewState == false) {
ViewState.SetItemDirty("Text", false);
}
return base.SaveViewState();
}
private bool SaveTextViewState {
get {
//


// Must be saved when
// 1. There is a registered event handler for SelectedIndexChanged
// 2. Control is not enabled or visible, because the browser's post data will not include this control
// 3. The instance is a derived instance, which might be overriding the OnTextChanged method

if (TextMode == TextBoxMode.Password) {
return false;
}

if ((Events[EventTextChanged] != null) ||
(IsEnabled == false) ||
(Visible == false) ||
(ReadOnly) ||
(this.GetType() != typeof(TextBox))) {
return true;
}

return false;
}
}

}
public class WebControl : Control, IAttributeAccessor {
protected override object SaveViewState() {
Pair myState = null;

// Save values cached out of view state
if (_webControlFlags[disabledDirty]) {
ViewState["Enabled"] = !flags[isWebControlDisabled];
}

if (ControlStyleCreated) {
// the style shares the StateBag of its owner WebControl
// call SaveViewState to let style participate in state management
ControlStyle.SaveViewState();
}

object baseState = base.SaveViewState();
object aState = null;
if (attrState != null) {
aState = attrState.SaveViewState();
}

if (baseState != null || aState != null) {
myState = new Pair(baseState, aState);
}
return myState;
}
}
public class Control : IComponent, IParserAccessor, IUrlResolutionService, IDataBindingsAccessor, IControlBuilderAccessor, IControlDesignerAccessor, IExpressionsAccessor {
protected virtual object SaveViewState() {
// Save values cached out of view state
if (flags[visibleDirty]) {
ViewState["Visible"] = !flags[invisible];
}
if (flags[validateRequestModeDirty]) {
ViewState["ValidateRequestMode"] = (int)ValidateRequestMode;
}
if (_viewState != null)
return _viewState.SaveViewState();

return null;
}
}
public sealed class StateBag : IStateManager, IDictionary {
internal object SaveViewState() {
ArrayList data = null;
if (bag.Count != 0) {
IDictionaryEnumerator e = bag.GetEnumerator();
while (e.MoveNext()) {
StateItem item = (StateItem)(e.Value);
if (item.IsDirty) {
if (data == null) {
data = new ArrayList();
}
#if OBJECTSTATEFORMATTER
data.Add(new IndexedString((string)e.Key));
#else
data.Add(e.Key);
#endif
data.Add(item.Value);
}
}
}

return data;
}
}

到這里我們知道保存狀態(tài)信息主要是在StateBag 的SaveViewState方法中,這里有一個(gè)檢查  if (item.IsDirty) ,在TextBox的SaveViewState方法中有一個(gè)判斷
代碼如下:
if (SaveTextViewState == false) {
ViewState.SetItemDirty("Text", false);
}

與它的SaveTextViewState 屬性有關(guān)。

那么我們可以總結(jié)一下:動(dòng)態(tài)創(chuàng)建的控件默認(rèn)是在被添加的時(shí)候加載器狀態(tài)數(shù)據(jù),如果是靜態(tài)添加的數(shù)據(jù)那就是LoadAllState來處理狀態(tài)數(shù)據(jù)的加載。狀態(tài)數(shù)據(jù)的加載與控件的SaveViewState密切相關(guān),如果該方法的返回值為null既沒有狀態(tài)信息,那也不需要加載什么狀態(tài)信息了。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

asp.net 動(dòng)態(tài)創(chuàng)建TextBox控件及狀態(tài)數(shù)據(jù)如何加載

asp.net 動(dòng)態(tài)創(chuàng)建TextBox控件及狀態(tài)數(shù)據(jù)如何加載:接著上文Asp.net TextBox的TextChanged事件你真的清楚嗎? 這里我們來說說狀態(tài)數(shù)據(jù)時(shí)如何加載的。雖然在Control中有調(diào)用狀態(tài)轉(zhuǎn)存的方法,但是這里有一個(gè)判斷條件 if (_controlState >= ControlState.ViewStateLoaded) 一般的g
推薦度:
標(biāo)簽: 如何 狀態(tài) 控件
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 金溪县| 微山县| 莲花县| 收藏| 安庆市| 江北区| 射阳县| 通江县| 成安县| 临颍县| 永胜县| 西吉县| 淄博市| 郸城县| 金堂县| 陇川县| 三原县| 中西区| 富顺县| 福州市| 云和县| 林西县| 东乌珠穆沁旗| 肇州县| 阿拉善左旗| 郸城县| 昔阳县| 仁布县| 元阳县| 宜州市| 云林县| 册亨县| 镇平县| 平陆县| 电白县| 潜山县| 旬阳县| 奉贤区| 芜湖县| 青神县| 静宁县|