如何基于Cell值ASP C#在GridView上以dinamically方式显示按钮 [英] How to dinamically display a button on a GridView based on Cell value ASP C#

查看:99
本文介绍了如何基于Cell值ASP C#在GridView上以dinamically方式显示按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hiya,我想知道是否有人可以帮我这个代码。

我想要做的是从数据库中读取记录并在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 the visible 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆