在处理最近的项目时,我发现CommandArgument属性可以有多有用。 我需要确定数据网格中显示的行的record_id。 当用户单击“编辑图像按钮”时,我需要将用户重定向到“编辑”页面,该页面上的数据将用数据库中的数据预先填充。 我尝试了几项都没有成功,然后发现CommandArgument属性可以用于此任务。
这是我的数据网格
[HTML] <asp:datagrid id =“ dgReorgs” runat =“ server” OnSortCommand =“ dgReorgs_SortCommand” OnPageIndexChanged =“ dgReorgs_PageIndexChanged”
PagerStyle-HorizontalAlign =“ Center” PagerStyle-Mode =“ NumericPages” BorderWidth =“ 0px” CellSpacing =“ 1” CellPadding =“ 2” AllowSorting =“ True” ShowFooter =“ True” AutoGenerateColumns =“ False” PageSize =“ 20”
AllowPaging =“ True” OnItemCommand =“ dgReorgs_ItemCommand” PagerStyle-CssClass =“ PagingLink”>
<栏目>
<asp:TemplateColumn>
<HeaderStyle HorizontalAlign =“ Center”> </ HeaderStyle>
<ItemStyle HorizontalAlign =“ Center”> </ ItemStyle>
<HeaderTemplate>
<asp:ImageButton ID =“ ibtnAdd” Runat =“服务器” ImageUrl =“ images / Add.gif” OnClick =“ ibtnAdd_Click” Visible =“ False”> </ asp:ImageButton>
</ HeaderTemplate>
<ItemTemplate>
<asp:ImageButton ID =“ ibtnEdit” Visible =“ False” Runat =“ server” ImageUrl =“ images / Edit.gif” CommandArgument ='<%#DataBinder.Eval(Container,“ DataItem.record_id”)%>'CommandName =“编辑”>
</ asp:ImageButton>&nbsp;
</ ItemTemplate>
</ asp:TemplateColumn>
<asp:BoundColumn DataField =“ offer_posting_date” SortExpression =“ offer_posting_date” HeaderText =“提供发布日期”
DataFormatString =“ {0:MM / dd / yyyy}” HeaderStyle-Font-Size =“ 10”>
<HeaderStyle HorizontalAlign =“ Center” ForeColor =“ White” BackColor =“ Navy”> </ HeaderStyle>
<ItemStyle HorizontalAlign =“ Center” BackColor =“ White”> </ ItemStyle>
</ asp:BoundColumn>
<asp:BoundColumn DataField =“ symbol” SortExpression =“ symbol” HeaderText =“ Symbol” HeaderStyle-Font-Size =“ 10”>
<HeaderStyle HorizontalAlign =“ Center” ForeColor =“ White” BackColor =“ Navy”> </ HeaderStyle>
<ItemStyle HorizontalAlign =“ Center” BackColor =“ White”> </ ItemStyle>
</ asp:BoundColumn>
<asp:BoundColumn DataField =“ offer_expiration_date” SortExpression =“ offer_expiration_date” HeaderText =“到期日期”
DataFormatString =“ {0:MM / dd / yyyy}” HeaderStyle-Font-Size =“ 10”>
<HeaderStyle HorizontalAlign =“ Center” ForeColor =“ White” BackColor =“ Navy”> </ HeaderStyle>
<ItemStyle HorizontalAlign =“ Center” BackColor =“ White”> </ ItemStyle>
</ asp:BoundColumn>
<asp:BoundColumn DataField =“ notes” SortExpression =“ notes” HeaderText =“ Notes” HeaderStyle-Font-Size =“ 10”>
<HeaderStyle HorizontalAlign =“ Center” ForeColor =“ White” BackColor =“ Navy”> </ HeaderStyle>
<ItemStyle Width =“ 180px” BackColor =“ White” Wrap =“ True”> </ ItemStyle>
</ asp:BoundColumn>
</ Columns>
<PagerStyle HorizontalAlign =“ Center” Mode =“ NumericPages”> </ PagerStyle>
</ asp:datagrid> [/ HTML]
以下语句是键CommandArgument ='<%#DataBinder.Eval(Container,“ DataItem.record_id”)%>'(请参见代码中的第12行)。 注意:如果您的数据网格的数据源不包含record_id列,则此语句将不起作用。
现在在代码后面。
我使用datagrid的ItemCommand事件来获取已选择进行编辑的行的record_id。 在这种情况下,我必须检查该项目是否是datagrid标头部分的一部分,或者它是否是datagrid寻呼机部分的一部分。 如果不是,那么我可以将页面重定向到“编辑”页面,并使用e.CommandArgument将record_id作为查询字符串附加。
public void dgReorgs_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.Item.ItemType != ListItemType.Header && e.Item.ItemType != ListItemType.Pager)
{
if(e.CommandName == "Edit")
{
Response.Redirect("EditReorg.aspx?value=" + e.CommandArgument);
}
}
}
然后,在“编辑”页面的page_load事件中,我将调用一个查询,该查询将为我获取该行的数据,然后使用数据预填充页面上的控件。
我希望这段代码可以帮助某些人了解如何使用CommandArgument属性。
内森