您的位置:首页 > 其它

GridView如何更新批量数据和单条记录(downmoon)?

2007-12-14 13:44 357 查看
后台代码段






Members
#region
Members




protected
GridView GVList;




public

string
PreUrl
=
Agronet.Common.Framework.Util.Globals.MemberUserPath
+

"
Product
"

+

@"
/
"
;






protected
Agronet.Common.Framework.Util.Pager pager;




protected
TextBox txtSearchTxt;




protected
Button btnSearch;




protected
HyperLink cmdAdd;




protected
LinkButton cmdDel;




protected
LinkButton cmdRecommend;




protected
LinkButton cmdUnPublish;




protected
TextBox txtWords;




protected
DropDownList ddlType;




protected
Label TradeTypeID;




protected
Label NoResult;




private

int
_page
=

1
;




public

int
_sort
=

0
;






/**/
///

<summary>




///
关键字




///
downmoon 2007年12月12日




///

</summary>




private

string
_word






...
{




get






...
{




object
o
=
ViewState[
"
strWords
"
];




return
(o
==

null
)
?

""
: o.ToString();



}




set






...
{



ViewState[
"
strWords
"
]
=
value;



}



}






//
审核状态




public

short
CheckState






...
{




get






...
{




object
o
=
ViewState[
"
CheckState
"
];




return
SQLParser.ShortParse(o);



}






set

...
{ ViewState[
"
CheckState
"
]
=
value; }



}




#endregion






Events
#region
Events






protected

override

void
OnLoad(EventArgs e)






...
{




base
.OnLoad(e);






Check
#region
Check



CheckSiteUser();




#endregion








initPage
#region
initPage



_page
=
SQLParser.IntParse(Page.Request.QueryString[
"
page
"
]);



_word
=
SQLParser.StringParse(Page.Request.QueryString[
"
word
"
]);



CheckState
=
SQLParser.ShortParse(Page.Request.QueryString[
"
st
"
]);






if
(txtSearchTxt
!=

null
)






...
{



txtSearchTxt.Attributes.Add(
"
maxlength
"
,
"
20
"
);



txtSearchTxt.Text
=
_word;



}




if
(
this
.ddlType
!=

null
)






...
{




this
.ddlType.SelectedValue
=

this
.CheckState.ToString();




this
.ddlType.SelectedIndexChanged
+=

new
EventHandler(ddlType_SelectedIndexChanged);





}






if
(cmdAdd
!=

null
)
...
{ cmdAdd.NavigateUrl
=
PreUrl
+

"
Insert.aspx
"
; }






if
(cmdDel
!=

null
)
...
{ cmdDel.Click
+=

new
EventHandler(cmdDel_Click); }






if
(cmdRecommend
!=

null
)
...
{ cmdRecommend.Click
+=

new
EventHandler(cmdRecommend_Click); }






if
(cmdUnPublish
!=

null
)
...
{ cmdUnPublish.Click
+=

new
EventHandler(cmdUnPublish_Click); }



pager.PageIndex
=
_page;



pager.PageSize
=
Agronet.Common.Framework.Util.Globals.PageSize;




if
(GVList
!=

null
)






...
{



GVList.RowDataBound
+=

new
GridViewRowEventHandler(GVList_RowDataBound);



GVList.RowCommand
+=

new
GridViewCommandEventHandler(GVList_RowCommand);



GVList.RowUpdating
+=

new
GridViewUpdateEventHandler(GVList_RowUpdating);



}






if
(NoResult
!=

null
)
...
{ NoResult.Text
=
GetCurStateByID(CheckState)
+

"
列表
"
; }






if
(btnSearch
!=

null
)
...
{ btnSearch.Click
+=

new
EventHandler(btnSearch_Click); }






#endregion






BindList
#region
BindList




if
(
!
IsPostBack)






...
{



BindList();



}



pager.UrlFormat
=
PreUrl
+

"
?page={0}&sort=0&dvid=2&word=
"

+
_word
+

"
&st=
"

+
CheckState.ToString();




#endregion



}






Serarch
#region
Serarch




private

void
btnSearch_Click(
object
sender, EventArgs e)






...
{




string
strurl
=
PreUrl
+

"
?dvid=2&sort=0&st={0}&word={1}
"
;




this
.CheckState
=
SQLParser.ShortParse(
this
.ddlType.SelectedItem.Value);



strurl
=

string
.Format(strurl, CheckState.ToString(), txtSearchTxt.Text.Trim());



PageLocation(strurl);



}




#endregion






ddlType
#region
ddlType




private

void
ddlType_SelectedIndexChanged(
object
sender, EventArgs e)






...
{




if
(
this
.ddlType
!=

null

&&
ddlType.SelectedValue.Trim()
!=

""
)






...
{




this
.CheckState
=
SQLParser.ShortParse(
this
.ddlType.SelectedItem.Value);




string
strurl
=
PreUrl
+

"
?dvid=2&page=1&st=
"

+
CheckState.ToString()
+

"
&word=
"

+

this
.txtSearchTxt.Text.Trim(); ;



PageLocation(strurl);



}



}




#endregion




protected

void
cmdDel_Click(
object
sender, EventArgs e)






...
{






执行批量操作
#region
执行批量操作



UpdateMultiRecordsByWhere(pager.PageSize,
-
4
,
1
);




#endregion



}




private

void
cmdUnPublish_Click(
object
sender, EventArgs e)






...
{






执行批量操作
#region
执行批量操作



UpdateMultiRecordsByWhere(pager.PageSize,
-
2
,
1
);




#endregion

;



}




private

void
GVList_RowCommand(
object
sender, GridViewCommandEventArgs e)






...
{






执行批量操作
#region
执行批量操作




if
(e.CommandName
==

"
Update
"
)






...
{




try






...
{




int
days
=

0
;






if
(muser.ClientClass
>

0
)
...
{ days
=
Globals.ProductinfoUpdatePerDays; }




long
pid
=
SQLParser.LongParse(GVList.DataKeys[SQLParser.IntParse(e.CommandArgument)].Value);




//
GridView a = (GridView)sender;




if
(pid
>

0
)






...
{




int
retValue
=
Agronet.Product.Framework.Data.DataDTOProvider.ProducyUpdateModifyTime(pid, days, muser.LoginID);




switch
(retValue)






...
{




case

-
1
:



Debug(
"
产品更新失败,原因:产品未通过审核!
"
,
"
Error
"
);




break
;




case

0
:



Debug(
"
产品更新失败,原因:未知!
"
,
"
Error
"
);




break
;




case

1
:






Index
#region
Index



Debug(
"
产品更新成功!
"
,
"
Succeed
"
);




#endregion




break
;




case

2
:



Debug(
"
尊敬用户
"

+
user.LoginID
+

@"
您好, 您选择的产品暂时还不能被更新,原因:单位时间内更新过与频繁,二十分钟之内不能连续更新!
"
,
"
Error
"
);




break
;




default
:




break
;



}





}



}




catch
(Exception ex)






...
{




return
;



}



}




#endregion



}




private

void
GVList_RowUpdating(
object
sender, GridViewUpdateEventArgs e)






...
{




//
BindList();



}




private

void
cmdRecommend_Click(
object
sender, EventArgs e)






...
{






执行批量操作
#region
执行批量操作



UpdateMultiRecordsByWhere(pager.PageSize,
1
,
2
);




#endregion





}




protected

void
GVList_RowDataBound(
object
sender, GridViewRowEventArgs e)






...
{




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






...
{



HyperLink cmdMod
=
(HyperLink)e.Row.FindControl(
"
cmdMod
"
);






if
(cmdMod
!=

null
)
...
{ cmdMod.NavigateUrl
=
PreUrl
+

"
Modify.aspx?dvid=2&PKID=
"

+
DataBinder.Eval(e.Row.DataItem,
"
P_ID
"
); }



LinkButton lbUpdate
=
(LinkButton)e.Row.FindControl(
"
cmdUpdate
"
);






if
(lbUpdate
!=

null
)
...
{ lbUpdate.CommandArgument
=
e.Row.RowIndex.ToString(); }



}



}




#endregion






Methods
#region
Methods






BindList
#region
BindList






private

void
BindList()






...
{




string
strWhere
=

string
.Empty;



strWhere
=

"
(LoginID='
"

+
muser.LoginID
+

"
')
"
;



Agronet.Product.Framework.Components.ProductCollection sc
=
Agronet.Product.Framework.Data.DataDTOProvider.GetProductReturnCollection(_word.Trim(), strWhere, pager.PageIndex, pager.PageSize, _sort, CheckState);




this
.GVList.DataSource
=
sc;




this
.GVList.DataBind();




if
(sc.MaxItems
>

0
)






...
{ pager.ItemCount
=
sc.MaxItems; }




else






...
{



pager.Visible
=

false
;




this
.NoResult.Text
=

"
无符合条件的记录!
"
;



}





}






Multiple Record Update Method
#region
Multiple Record Update Method




private

void
UpdateMultiRecordsByWhere(
int
mCount,
short
mState,
short
updateType)






...
{






Check
#region
Check



CheckSiteUser();




#endregion






执行批量操作
#region
执行批量操作




try






...
{



StringBuilder sb
=

new
StringBuilder();




string
strTemp
=

string
.Empty;




string
PKName
=

string
.Empty;




int
tempCount
=

0
;






if
(GVList
==

null

||
GVList.Rows.Count
==

0
)
...
{
return
; }



PKName
=
GVList.DataKeyNames[
0
].ToString();



sb.Append(
"
where
"
);



sb.Append(
"
LoginID= '
"
);



sb.Append(muser.LoginID);



sb.Append(
"
' AND
"
);



sb.Append(PKName);



sb.Append(
"
in (
"
);




for
(
int
i
=

0
; i
<
GVList.Rows.Count; i
++
)






...
{



CheckBox chk
=
(CheckBox)GVList.Rows[i].FindControl(
"
chkDelServer
"
);




if
(chk
!=

null

&&
chk.Checked)






...
{



sb.Append(GVList.DataKeys[i].Value.ToString());



sb.Append(
"
,
"
);



tempCount
++
;



}



}




if
(tempCount
==

0
)
return
;






if
(tempCount
>
mCount)
...
{ Debug(
"
超出批量操作的最大允许数量!
"
,
this
.ClientID,
true
);
return
; }



strTemp
=
sb.ToString();






if
(strTemp.EndsWith(
"
,
"
))
...
{ strTemp
=
strTemp.Remove(strTemp.Length
-

1
); }



strTemp
+=

"
)
"
;




if
(updateType
==

1
)






...
{



Agronet.Product.Framework.Data.DataDTOProvider.ProductUpdateStatusByWhere(strTemp, mState, muser.LoginID);



}




else






...
{



Agronet.Product.Framework.Data.DataDTOProvider.ProductUpdateRecommendStatusByWhere(strTemp, mState, muser.LoginID);



}



BindList();



}




catch
(Exception ex)






...
{



Debug(ex.Message,
this
.ClientID,
true
);




return
;



}




#endregion



}






#endregion




#endregion




#endregion



前台html





<
script
language
="JavaScript"
>
...






<!--




function
CheckAll(val)






...
{




for
(
var
i
=
0
;i
<
document.forms[
0
].elements.length;i
++
)






...
{




var
e
=
document.forms[
0
].elements[i];




if
(e.Type
=
"
checkbox
"

&&
e.name
!=
"
_ctl2:_ctl0:radioSortDesc
"
)






...
{



e.checked
=
val;



}



}



}






//
-->





</
script
>



<
table
width
="95%"
border
="0"
cellpadding
="0"
cellspacing
="0"
align
="center"
>




<
tr
>




<
td
height
="25"
align
="right"
bgcolor
="#EFEFEF"
class
="tab_font_right"
>




<
strong
>
产品搜索
</
strong
>





<
asp:TextBox
ID
="txtSearchTxt"
runat
="server"

/>




<
asp:Button
ID
="btnSearch"
runat
="server"
Text
="搜索"
></
asp:Button
>




     
转到




<
asp:DropDownList
ID
="ddlType"
runat
="server"
CssClass
="maintext"
AutoPostBack
="True"
>




<
asp:ListItem
Value
="10000"
>
所有产品
</
asp:ListItem
>




<
asp:ListItem
Value
="2"
>
已推荐
</
asp:ListItem
>




<
asp:ListItem
Value
="1"
>
当前发布
</
asp:ListItem
>




<
asp:ListItem
Value
="0"
>
等待审核
</
asp:ListItem
>




<
asp:ListItem
Value
="-1"
>
未通过审核
</
asp:ListItem
>




<
asp:ListItem
Value
="-2"
>
未发布
</
asp:ListItem
>




</
asp:DropDownList
>




</
td
>




</
tr
>



</
table
>



<
table
width
="95%"
border
="0"
align
="center"
cellpadding
="0"
cellspacing
="1"
>




<
tr
>




<
td
>




<
asp:GridView
ID
="GVList"
runat
="server"
ShowFooter
="true"
AutoGenerateColumns
="False"



BorderStyle
="Solid"
BorderColor
="#ffffff"
GridLines
="Horizontal"
CellSpacing
="1"



Width
="100%"
HorizontalAlign
="NotSet"
BorderWidth
="0px"
EnableViewState
="true"



DataKeyNames
="P_ID"
>




<
HeaderStyle
CssClass
="InfoHeaderText"
ForeColor
="#000000"
HorizontalAlign
="center"



Height
="22px"

/>




<
AlternatingRowStyle
BackColor
="#f7f7f7"

/>




<
RowStyle
HorizontalAlign
="center"
Height
="20px"
BackColor
="#E3EAEB"

/>




<
SelectedRowStyle
BackColor
="#C5BBAF"
Font-Bold
="True"
ForeColor
="#333333"

/>




<
Columns
>




<
asp:TemplateField
>




<
HeaderStyle
Width
="60px"
BackColor
="#1C5E55"
ForeColor
="White"

/>




<
HeaderTemplate
>



编号
</
HeaderTemplate
>




<
ItemTemplate
>




<
asp:Label
ID
="PKID"
Text
='<%#
DataBinder.Eval(Container.DataItem,"P_ID")%
>
' runat="server" />




</
ItemTemplate
>




</
asp:TemplateField
>




<
asp:TemplateField
Visible
="False"
>




<
HeaderTemplate
>




<
asp:Label
ID
="Image_Head"
runat
="server"
Text
="产品图片"

/>




</
HeaderTemplate
>




<
HeaderStyle
Width
="120"

/>




<
ItemTemplate
>




<
asp:HyperLink
ID
="P_SmallImage"
runat
="server"

/>




</
ItemTemplate
>




</
asp:TemplateField
>




<
asp:TemplateField
>




<
HeaderTemplate
>




 
产品名称
</
HeaderTemplate
>




<
ItemStyle
HorizontalAlign
="left"

/>




<
HeaderStyle
HorizontalAlign
="Left"

/>




<
ItemTemplate
>




 
·
<
asp:Label
ID
="P_Name"
Text
='<%#
DataBinder.Eval(Container.DataItem,"P_Name")%
>
'



runat="Server" />
<
img
src
='<%#
"/Resource/images/Check"+DataBinder.Eval(Container, "DataItem.CurState")+".gif" %
>
' />
</
ItemTemplate
>




</
asp:TemplateField
>




<
asp:BoundField
DataField
="ModTime"
HeaderText
="修改时间"
DataFormatString
="{0:yyyy-MM-dd HH:mm}"



HtmlEncode
="false"

/>




<
asp:BoundField
DataField
="ModUser"
HeaderText
="修改者"

/>




<
asp:TemplateField
>




<
HeaderTemplate
>



状态
</
HeaderTemplate
>




<
ItemTemplate
>




<
asp:Label
ID
="CurState"
Text
='<%#
GetCurStateByID(DataBinder.Eval(Container.DataItem,"CurState"))%
>
'



runat="Server" />




</
ItemTemplate
>




</
asp:TemplateField
>




<
asp:TemplateField
>




<
HeaderStyle
Width
="60px"

/>




<
HeaderTemplate
>



编辑
</
HeaderTemplate
>




<
ItemTemplate
>




<
asp:HyperLink
ID
="cmdMod"
CssClass
="ElementNavigation"
Text
="编辑"
runat
="server"

/>




</
ItemTemplate
>




</
asp:TemplateField
>




<
asp:TemplateField
>




<
HeaderStyle
Width
="60px"

/>




<
HeaderTemplate
>



更新
</
HeaderTemplate
>




<
ItemTemplate
>




<
asp:LinkButton
ID
="cmdUpdate"
CommandName
="Update"
CssClass
="ElementNavigation"
Text
="快速更新"
runat
="server"
OnClientClick
="return confirm('您确认快速更新该记录吗?');"
/>




</
ItemTemplate
>




</
asp:TemplateField
>




<
asp:TemplateField
>




<
HeaderStyle
Width
="40px"

/>




<
HeaderTemplate
>




<
input
type
="checkbox"
name
="allbox"
value
="Check All"
onclick
="CheckAll(allbox.checked);"

/>




</
HeaderTemplate
>




<
ItemTemplate
>




<
asp:CheckBox
ID
="chkDelServer"
runat
="server"

/>




</
ItemTemplate
>




</
asp:TemplateField
>




</
Columns
>




</
asp:GridView
>




</
td
>




</
tr
>




<
tr
>




<
td
align
="right"
>




<
asp:HyperLink
ID
="cmdAdd"
ForeColor
="Red"
Text
="新增"
CssClass
="ElementNavigation"



runat
="server"

/>




  
<
asp:LinkButton
ID
="cmdRecommend"
runat
="server"
CssClass
="ElementNavigation"



Text
="推荐"
CommandName
="ReCommend"
CausesValidation
="false"
OnClientClick
="javascript:return confirm('确定推荐或(取消推荐)已选择的数据吗?')"
></
asp:LinkButton
>




  
<
asp:LinkButton
ID
="cmdUnPublish"
runat
="server"
CssClass
="ElementNavigation"



Text
="取消发布"
CommandName
="UnPublish"
CausesValidation
="false"
OnClientClick
="javascript:return confirm('确定取消发布已选择的数据吗?')"
></
asp:LinkButton
>




  
<
asp:LinkButton
ID
="cmdDel"
ForeColor
="Red"
Text
="删除"
CssClass
="ElementNavigation"



CausesValidation
="false"
runat
="server"
CommandName
="Delete"
OnClientClick
="javascript:return confirm('确定删除已选择的数据吗?')"

/>




</
td
>




</
tr
>




<
tr
>




<
td
>




<
Agronet:Pager
ID
="pager"
runat
="server"
CssClass
="Pager"
LinkFormatActive
='<a
href
="{0}"
class
="Current"
>
{1}
</
a
>
'



PrefixText="页码:" UseSpacer="False" />




</
td
>




</
tr
>



</
table
>

值处注意的是:

必须添加这个事件,即使它什么也不干




private

void
GVList_RowUpdating(
object
sender, GridViewUpdateEventArgs e)






...
{




//
BindList();



}

否则会提示“未处理的RowUpdating事件”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: