![](/img/trans.png)
[英]Changing the text of a linkbutton of a gridview dynamically on the basis of a column value
[英]gridview linkbutton CommandArgument value not changing
我有一個帶有數據列表的網格視圖和一個用於刪除該行的LinkButton。
<asp:GridView ID="gridApartment" EmptyDataText="No Records Found" runat="server" AutoGenerateColumns="False" BorderWidth="0"
AllowPaging="true" ShowFooter="false" PageSize="15" Width="100%" OnPageIndexChanging="gridApartment_PageIndexChanging"
CssClass="mGrid"
OnRowDeleting="gridApartment_RowDeleting" OnRowCommand="gridApartment_RowCommand">
<AlternatingRowStyle CssClass="alt" />
<PagerStyle CssClass="pgr" />
<Columns>
<asp:TemplateField HeaderText="Building">
<ItemTemplate>
<asp:Label ID="BuildingName" runat="server" Text='<%#Eval("BuildingName") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle Width="25%"></HeaderStyle>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkDelete" CssClass="aDelete" ToolTip="Delete" runat="server" CommandName="delete" OnClientClick=' javascript:return confirm("Are you sure you want to delete?"); '
CommandArgument='<%# Eval("RoomDetailsId") %>'>Delete</asp:LinkButton>
</ItemTemplate>
<HeaderStyle Width="8%"></HeaderStyle>
</asp:TemplateField>
</Columns>
</asp:GridView>
此代碼填充的加載數據
gridApartment.DataSource = masterManager.GetAllRooms();
gridApartment.DataBind();
現在我有一個搜索框,當我搜索時,過濾器結果將被此代碼綁定。
gridApartment.DataSource = conobj.GetSearchDetails("usp_RoomDetailsSearch", "@SearchName", txtSearchterm.Text.Trim());
gridApartment.DataBind();
用於刪除的代碼是
protected void gridApartment_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e)
{
if (e.CommandName == "delete")
{
var masterManager = new MasterEntryManager();
int res = masterManager.DeletRoom(e.CommandArgument.ToString());
Search();
}
}
第一次加載網格時,e.CommandArgument具有正確的ID,我可以刪除正確的行。 但是,當我搜索並重新綁定gridview時,不會使用新ID更新e.CommandArgument值。 它仍然返回與頁面加載時首先加載的ID相同的ID。
例如:
ID未更新。 如何獲取更新的e.CommandArgument值。
與期望相反,CommandArgument不與執行回發的控件關聯。 而是,DataSource作為ViewState的一部分返回,並且CommandArgument由控件的索引引用。 如果GridView或DataSource發生更改,則索引將不再正確。
您需要確保GridView和DataSource在引用CommandArgument之前沒有更新,但是在刪除之后又更新了(看起來就像您擁有此部分一樣)。 請記住,回發事件在頁面加載后發生。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
gridApartment.DataSource = masterManager.GetAllRooms();
gridApartment.DataBind();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.