我有一個asp.net應用程序中的gridview。我想插入一個帶圖像按鈕的列,點擊它可以啓用或禁用用戶或更改數據庫中的狀態字段,並相應地更改圖像按鈕圖像的用戶狀態。Gridview中啓用和禁用圖像按鈕
含義:我想爲禁用和啓用的用戶顯示不同的圖像。
如何在C#中執行此操作並將數據綁定到圖像按鈕?
任何人都請幫忙。提前致謝。
我有一個asp.net應用程序中的gridview。我想插入一個帶圖像按鈕的列,點擊它可以啓用或禁用用戶或更改數據庫中的狀態字段,並相應地更改圖像按鈕圖像的用戶狀態。Gridview中啓用和禁用圖像按鈕
含義:我想爲禁用和啓用的用戶顯示不同的圖像。
如何在C#中執行此操作並將數據綁定到圖像按鈕?
任何人都請幫忙。提前致謝。
使用ItemDataBound事件。這是您可以檢查網格的每一行並對其應用更改的位置。然後,你可以隱藏/取消隱藏或更改按鈕:
VB.net以下,但你可以很容易地轉換爲C#:
Dim ib As ImageButton = CType(e.Item.FindControl("ibFav"), ImageButton)
ib.Visible = False
Dim ib2 As ImageButton = CType(e.Item.FindControl("ibRemFav"), ImageButton)
ib2.Visible = True
樣品用戶型號:
public class UserModel {
public string Name { get; set; }
public bool IsEnabled { get; set; }
}
這裏是GridView的代碼:
<asp:GridView ID="GridView" runat="server" AutoGenerateColumns="false"
onrowcommand="GridView_RowCommand" onrowdatabound="GridView_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:ImageButton ID="EnabledImgBtn" runat="server"
CommandArgument='<%# Eval("Name") %>'
CommandName="ResetUserState" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Name" HeaderText="Name" />
//Other columns....
</Columns>
</asp:GridView>
根據您的需要設置'CommandArgument'。例如用戶的ID。 示例代碼,後面爲GridView:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack){
LoadGridView();
}
}
private void LoadGridView()
{
this.GridView.DataSource = GetUsersFromDatabase();
this.GridView.DataBind();
}
protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var user = e.Row.DataItem as UserModel;
var enabledImgBtn = e.Row.FindControl("EnabledImgBtn") as ImageButton;
if (enabledImgBtn != null)
enabledImgBtn.ImageUrl = user.IsEnabled ? "~/YourImagePath/enabled.png"
: "~/YourImagePath/disalbed.png";
}
}
protected void GridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "ResetUserState")
{
if (e.CommandArgument!= null)
{
var userName = e.CommandArgument.ToString();
//Change user enabled state and Update database
//Sample code:
var user = FindUserByName("userName");
user.IsEnabled = !user.IsEnabled;
//SaveInDatabase(user);
LoadGridView();
}
}
}
您可以考慮使用「CommandField中」與類型等於「形象」而不是「模板列」,但這種方法,read more的問題。
希望這會有所幫助。
<asp:GridView ID="GridView" runat="server" AutoGenerateColumns="false"
onrowcommand="GridView_RowCommand" onrowdatabound="GridView_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="Change Status" ItemStyle-CssClass="GrdItemImg">
<ItemTemplate>
<asp:ImageButton ID="ibtnChangeActiveStatus" CommandArgument='<%#Eval("RecordID")%>'
CommandName='GRDSTATUS' runat="server" ImageUrl='<%# getStatusImage(Convert.ToInt32(DataBinder.Eval(Container.DataItem,"IsApproved"))) %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Col2" HeaderText="Col2" />
//Other Respective columns....
...........
..........
</Columns>
</asp:GridView>
並在CS文件中添加以下功能。
public string getStatusImage(int intStatus)
{
string strStatus = string.Empty;
if (intStatus == 1)
{
strStatus = "~/images/active.png";
}
else
{
strStatus = "~/images/inactive.png";
}
return strStatus;
}
因此,在「intStatus」的基礎上,將設置相應的主動/主動圖像。