如何基于Cell值ASP C#在GridView上以dinamically方式显示按钮 [英] How to dinamically display a button on a GridView based on Cell value ASP C#
问题描述
我想要做的是从数据库中读取记录并在gridview上显示它们。然而,我的网格的最后一列是一个templateField,我显示一个imageButton来做一次点击的东西。
我的问题是:
如何仅当网格的特定单元格值为true时才显示ImageButton。
当值为False时,我试图将ImageButton设置为false,但它不起作用
任何帮助请
********************* ********************************** *
private void BindCustomDateBookings()
{
try
{
//获取用户选择的日期
var customDate = Convert.ToDateTime(txtDatePicker.Text);
//创建与数据库的连接
SqlConnection connectionViewBookings = new SqlConnection(connectionString);
//查询生成器
SqlDataAdapter dataAdapterVie wBookings = new SqlDataAdapter(queryCustomDateBookings,connectionViewBookings);
dataAdapterViewBookings.SelectCommand.Parameters.AddWithValue(@ customDate,customDate);
//创建将保存DB结果的数据
DataSet dataSetViewTodaysBookings = new DataSet();
//打开,保存结果并关闭连接
connectionViewBookings.Open();
dataAdapterViewBookings.Fill(dataSetViewTodaysBookings);
connectionViewBookings.Close();
//用结果填充网格
GridViewCustomDate.DataSource = dataSetViewTodaysBookings.Tables [0];
GridViewCustomDate.DataBind( );
}
catch(SqlException SqlExceptionTomorrow)
{
Response.Write(@< SCRIPT LANGUAGE = Java类cript> alert('无法连接到数据库此日期预订')< / SCRIPT>);
}
} //结束绑定自定义日期预订
******************************** ***************************
并且网格视图具有以下编码
< asp:GridView ID = GridViewCustomDate runat = server AutoGenerateColumns = False CssClass = viewBookingTable GridLines = 无
HeaderStyle-CssClass = gridViewHeader >
< HeaderStyle CssClass = gridViewHeader / >
< RowStyle CssClass = GridViewRowStyle / >
< AlternatingRowStyle CssClass = GridViewAlternatingRowStyle / >
< 列 >
< asp:BoundField DataField = bookingID ItemStyle-CssClass = displayGridViewID
HeaderStyle-CssClass = displayGridViewID >
< HeaderStyle CssClass = displayGridViewID / >
< ItemStyle CssClass = displayGridViewID / >
< / asp:BoundField >
< asp:BoundField 数据字段 = visitorName HeaderText = 访客姓名 / >
< asp:BoundField DataField = contactNo HeaderText = contactNo / >
< span class =code-keyword>< asp :BoundField DataField = hostName HeaderText = 主机名 / >
< asp:BoundField DataField = roomName HeaderText = 房间名称 / >
< asp:BoundField < span class =code-attribute> DataField = timeIn HeaderText = 时间 / >
< asp:BoundField DataField = smartCardNo HeaderText = 智能卡否 / >
< asp:TemplateField HeaderText = 必读访问 >
< ItemTemplate >
< asp:ImageButton ID = btnGetRequiredAccessCustomDate runat = server
< span class =code-attribute> ImageUrl < span class =code-keyword> = 〜/ images / buttons / clickMe.png
onclick = btnGetRequiredAccessCustomDate_Click / >
< / ItemTemplate >
< / asp:TemplateField >
< /列 >
< / asp:GridView >
您好,
您可以添加以下内容图像按钮代码中的cond
< asp:imagebutton id = btnGetRequiredAccessCustomDate runat = 服务器 xmlns:asp = #unknown >
ImageUrl =〜/ images / buttons / clickMe.png
Visible ='<%#string.IsNullOrEmpty(Eval('' ColumnName')== true ? false: true%>'
onclick =btnGetRequiredAccessCustomDate_Click/> < / asp:imagebutton >
看看这个简单的例子,它可能对你有帮助..
您必须将绑定字段(boolean
)值分配给按钮的visible
属性。
DataTable dt = new DataTable() ;
dt.Columns.Add( smartCardNo, typeof ( string ));
dt.Columns.Add( FlagVisible_Invisible, typeof ( bool ));
dt.Rows.Add( one,假跨度>);
dt.Rows.Add( two,真跨度>);
dt.Rows.Add( three,真跨度>);
GridView1.DataSource = dt;
GridView1.DataBind();
< asp:GridView ID = GridView1 runat = server AutoGenerateColumns = 错误 宽度 = 100% >
< 列 >
< asp:BoundField DataField = smartCardNo HeaderText = 智能卡否 < span class =code-attribute> / >
< asp:TemplateField HeaderText = 必需的访问权限 >
< ItemTemplate >
< asp:ImageButton ID = btnGetRequiredAccessCustomDate 可见 =' < span class =code-pagedirective><% #Eval( FlagVisible_Invisible )%> ' runat = server ImageUrl = 〜/ images / buttons / clickMe.png
< span class =code-attribute> / >
< < span class =code-leadattribute> / ItemTemplate >
< / asp:TemplateField >
< ; /列 >
< / asp:GridView >
看一下这个链接 http:/ /stackoverflow.com/questions/17588934/how-to-add-button-in-gridview-dynamically [ ^ ]
或此链接
如何在网格视图中动态创建模板列 [ ^ ]
谢谢
Ganesh
Hiya, I wonder if anyone can help me with this code.
What I am trying to do, is to read records from a database and display them on a gridview. However my last column of the grid is a templateField which I display an imageButton to do something once clicked.
My problem is :
How to display the ImageButton only when a particularly Cell of the grid is value true.
I was trying to set the ImageButton to false when the value was False, but it is not working
Any help please
*******************************************************
private void BindCustomDateBookings()
{
try
{
//Gets the date chosen by the user
var customDate = Convert.ToDateTime(txtDatePicker.Text);
//Creates a connection to the database
SqlConnection connectionViewBookings = new SqlConnection(connectionString);
//Query builder
SqlDataAdapter dataAdapterViewBookings = new SqlDataAdapter(queryCustomDateBookings, connectionViewBookings);
dataAdapterViewBookings.SelectCommand.Parameters.AddWithValue("@customDate", customDate);
//Create the data that will hold the result of DB
DataSet dataSetViewTodaysBookings = new DataSet();
//open, save results and close connection
connectionViewBookings.Open();
dataAdapterViewBookings.Fill(dataSetViewTodaysBookings);
connectionViewBookings.Close();
//fill the grid with results
GridViewCustomDate.DataSource = dataSetViewTodaysBookings.Tables[0];
GridViewCustomDate.DataBind();
}
catch (SqlException SqlExceptionTomorrow)
{
Response.Write(@"<SCRIPT LANGUAGE=""JavaScript"">alert('Could not connect to the database This date bookings')</SCRIPT>");
}
}//Ends Bind Custom Date bookings
***********************************************************
And the grid view has the following coded
<asp:GridView ID="GridViewCustomDate" runat="server" AutoGenerateColumns="False" CssClass="viewBookingTable" GridLines="None"
HeaderStyle-CssClass="gridViewHeader">
<HeaderStyle CssClass="gridViewHeader" />
<RowStyle CssClass="GridViewRowStyle" />
<AlternatingRowStyle CssClass="GridViewAlternatingRowStyle " />
<Columns>
<asp:BoundField DataField="bookingID" ItemStyle-CssClass="displayGridViewID"
HeaderStyle-CssClass="displayGridViewID" >
<HeaderStyle CssClass="displayGridViewID" />
<ItemStyle CssClass="displayGridViewID" />
</asp:BoundField>
<asp:BoundField DataField="visitorName" HeaderText="Visitor Name" />
<asp:BoundField DataField="contactNo" HeaderText="contactNo" />
<asp:BoundField DataField="hostName" HeaderText="Host Name" />
<asp:BoundField DataField="roomName" HeaderText="Room Name" />
<asp:BoundField DataField="timeIn" HeaderText="Time In" />
<asp:BoundField DataField="smartCardNo" HeaderText="Smart Card No" />
<asp:TemplateField HeaderText="Required Access">
<ItemTemplate>
<asp:ImageButton ID="btnGetRequiredAccessCustomDate" runat="server"
ImageUrl="~/images/buttons/clickMe.png"
onclick="btnGetRequiredAccessCustomDate_Click" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Hi,
you can just add the following cond in your imagebutton code
<asp:imagebutton id="btnGetRequiredAccessCustomDate" runat="server" xmlns:asp="#unknown"> ImageUrl="~/images/buttons/clickMe.png" Visible='<%#string.IsNullOrEmpty(Eval('ColumnName')==true? "false":"true" %>' onclick="btnGetRequiredAccessCustomDate_Click" /></asp:imagebutton>
Have a look at this simple example, It might help you..
You have to assign a bound field (boolean
) value to thevisible
property of the button.
DataTable dt = new DataTable(); dt.Columns.Add("smartCardNo", typeof(string)); dt.Columns.Add("FlagVisible_Invisible", typeof(bool)); dt.Rows.Add("one", false); dt.Rows.Add("two", true); dt.Rows.Add("three", true); GridView1.DataSource = dt; GridView1.DataBind();
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="100%"> <Columns> <asp:BoundField DataField="smartCardNo" HeaderText="Smart Card No" /> <asp:TemplateField HeaderText="Required Access"> <ItemTemplate> <asp:ImageButton ID="btnGetRequiredAccessCustomDate" Visible='<%# Eval("FlagVisible_Invisible") %>' runat="server" ImageUrl="~/images/buttons/clickMe.png" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
Have a look at this link http://stackoverflow.com/questions/17588934/how-to-add-button-in-gridview-dynamically[^]
or this link
How to create template columns dynamically in a grid view[^]
Thanks
Ganesh
这篇关于如何基于Cell值ASP C#在GridView上以dinamically方式显示按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!