Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >基于下拉列表选择的asp.net网格视图显示每条记录一或两行

基于下拉列表选择的asp.net网格视图显示每条记录一或两行
EN

Stack Overflow用户
提问于 2015-07-27 06:33:54
回答 3查看 3.1K关注 0票数 0

我有一个asp.net网格视图,它使用下面的代码(示例)为每条记录显示两行。

但是,使用位于页面顶部的下拉列表,基于它的选择(1或2),我希望网格视图通过以下方式更新自己:

选项1=每条记录显示两行。

选项2=每条记录只显示一行(第二个表行显示在下面的代码中,我不希望在选择选项2时显示它。

更新:选择下拉列表选项并使其工作正常,我在那里没有问题,但我需要知道如何操作网格视图以显示每条记录一或两行。因此,基本上,我如何(使用代码)将网格视图的格式从1行更改为2行。显然,可以选择使用两个网格视图并根据您的选择显示所需的网格视图,但是我更喜欢只使用一个网格视图(如果可能的话)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <HeaderTemplate>
           <asp:LinkButton ID="lbPN" runat="server" Text="Project Name" style "color:white;" CommandName="Sort" CommandArgument="PN"  tabindex="1000" ></asp:LinkButton><br />
           <asp:TextBox runat="server" ID="S_PN" CssClass="FilterField" ></asp:TextBox>
  </HeaderTemplate>
  <ItemTemplate>
           <table  >
              <tr>
                 <td class="STD_normal" style="width:150px; font-weight:bold"><%#Eval("PN")%>
                    </td>                                                    
              </tr>
              <tr>
                 <td class="STD_Normal_Grey" style="width:150px"><%#Eval("DD", "{0:dd-MMM-yyyy}")%> </td>
              </tr>
          </table>                                              
       </ItemTemplate>                                                              
      <HeaderStyle HorizontalAlign="Left"/>
      </asp:TemplateField>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-27 07:28:59

有基于我的一个数据库的代码,只需更改参数(这是服务器端示例,其他人在这里提供了客户端示例):

aspx:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<asp:DropDownList runat="server" ID="ddlChoice" AutoPostBack="true">
       <asp:ListItem Text="One row"></asp:ListItem>
       <asp:ListItem Text="Two rows"></asp:ListItem>
      </asp:DropDownList>
      <br /><br />
      <asp:GridView runat="server" ID="grdInfo" DataSourceID="sqlInfo">
       <Columns>
        <asp:TemplateField>
         <HeaderTemplate>
           <asp:LinkButton ID="lbPN" runat="server" Text="Project Name" style="color:white;" CommandName="Sort" CommandArgument="PN"  tabindex="1000" ></asp:LinkButton><br />
           <asp:TextBox runat="server" ID="S_PN" CssClass="FilterField" ></asp:TextBox>
         </HeaderTemplate>
         <ItemTemplate>
          <table>
           <tr><td runat="server" id="tdFirst" class="STD_normal" style="width:150px; display:block; font-weight:bold"><%# Eval("PNaziv")%></td></tr>
           <tr><td runat="server" id="tdSecond" class="STD_Normal_Grey" style="width:150px; display:none;"><%#Eval("PMesto")%></td></tr>
          </table>
         </ItemTemplate>
        </asp:TemplateField>
       </Columns>
      </asp:GridView>
      <asp:SqlDataSource ID="sqlInfo" runat="server" ConnectionString="<%$ ConnectionStrings:MDFConnection %>" SelectCommand="SELECT PNaziv,PMesto FROM Partneri ORDER BY PNaziv;" ></asp:SqlDataSource>

代码背后(vb.net)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

    Private Sub ddlChoice_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlChoice.SelectedIndexChanged
        grdInfo.DataBind()
    End Sub

    Private Sub grdInfo_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grdInfo.RowCreated
        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim td As HtmlTableCell = e.Row.Cells(0).FindControl("tdSecond")
            If ddlChoice.SelectedIndex = 0 Then td.Style("display") = "none" Else td.Style("display") = "block"
        End If
    End Sub

就像我在评论中写的那样,我设置了每个td idrunat="server"。Dropdownlist列表必须有AutoPostBack="true"

现在,在每个SelectedIndexChanged上都必须绑定您的网格,并且在每个创建的行上查找HtmlTableCell,现在,控制(它是td)并根据选定的索引显示或隐藏第二个td。但是,在style of每一个td中,我将display:block/none;放在行中。

当您启动webapp时,只有一行是可见的,之后,取决于下拉列表的选择。

在本例中,该表位于第一列(Dim td As HtmlTableCell = e.Row.Cells(0).FindControl("tdSecond"))中.您必须更改这个.e.Row.Cells(x)...;其中x是您的列索引。

更新:您没有定义prog.language,所以下面的代码在c#中(使用在线转换工具从vb.net转换而来,对不起,我用vb.net编程)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private void ddlChoice_SelectedIndexChanged(object sender, System.EventArgs e)
{
    grdInfo.DataBind();
}

private void grdInfo_RowCreated(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow) {
        HtmlTableCell td = e.Row.Cells[0].FindControl("tdSecond");
        if (ddlChoice.SelectedIndex == 0)
            td.Style("display") = "none";
        else
            td.Style("display") = "block";
    }
}
票数 1
EN

Stack Overflow用户

发布于 2015-07-27 06:53:52

客户端

一种方法是使用JavaScript或jQuery显示/隐藏第二行。为此,我建议用<div>替换表,并将类添加到div标记中,而不是td标记,或者拆分表,如服务器端示例所示。

下面是一个jQuery示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$("#ddl").change(function() {
    if($('#ddl option:selected').val() == 1) {
        $('STD_Normal_Grey').show();
    } else {
        $('STD_Normal_Grey').hide();
    }
}

服务器端

下面是另一个示例,展示了服务器端选项,以及如何拆分表以使控制显示变得更容易:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<table>
    <tr>
        <td class="STD_normal" style="width:150px; font-weight:bold">  
            <%#Eval("PN")%>
        </td>                                                    
     </tr>
 </table>
 <table style="display:<%# DdlVal == "1" ? "inline-block" : "none" %>;">
     <tr>
         <td class="STD_Normal_Grey" style="width:150px">
             <%#Eval("DD", "{0:dd-MMM-yyyy}")%>
         </td>
     </tr>
 </table> 

然后,在后面的代码中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
protected string DdlVal
{
    get { return ddl.SelectedValue; }
}

这将需要DropDownList回发,而客户端解决方案则不会,从而使客户端解决方案更快。

票数 1
EN

Stack Overflow用户

发布于 2015-07-27 06:42:07

使用下拉列表,您可以使用OnSelectedIndexChanged函数。就像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<asp:DropDownList runat="server" ID="ddlDemo" on SelectedIndexChanged="ddlDemo_SelectedIndexChanged">
<asp:ListItem Value="1">one</asp:ListItem><asp:ListItem Value="2">tow</asp:ListItem>
    </asp:DropDownList>

在代码中,您可以使用它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Protected Sub ddlDemo_SelectedIndexChanged(sender As Object, e As EventArgs)

        Dim selectedValue As Integer = ddlDemo.SelectedValue

        If ddlDemo.SelectedValue = 1 Then

            ' do something

        End If


    End Sub

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31655986

复制
相关文章
在创业最好的时代中掘金!
这不是一个最好的时代,也不是一个最坏的时代, 对创业者来说却是最好不过的时代。2014年6月,中国手机上网比例首次超过PC机上网比例,这是一个拥有超过5.5亿用户的巨大市场。这个巨大的市场还是一个相对封闭,而国外互联网巨头无法插足的市场。同时, 在这个市场上,资金充裕、投资者投资意愿强、创业协作环境成熟、创业退出管道多样化、大公司并购积极、对创业公司的态度比以往任何时候都更加开放、经过互联网巨头若干年的专业训练, 市场上有实操经验愿意出来创业的专业人才充足。
IT阅读排行榜
2018/08/13
3590
rem在响应式布局中的应用
最近做了一些响应式的页面,遇到了一些问题,想了些解决方法,在这里总结一下。目前响应式的主流实现方式是百分比布局,加上媒体查询@media screen。关于媒体查询还有媒体查询的一些兼容性问题,网上介绍的很多
用户9127725
2022/08/08
1.6K0
Java 8 中的方法引用,怎么用到最好?
在Java8中,使用方法引用非常简单,如String::isEmpty,但无法使用它否定的方法引用。本文内容即如何解决此问题使得我们能够更加全面地使用方法引用。
Java技术栈
2020/05/24
8220
yapi中mock jsonp接口响应的方法
普通的json schema和期望方式,都只能返回json,无法在返回中增加callback函数名。我们尝试使用“高级mock”中的“脚本”完成这个功能。如下图所示,注意“是否开启”的部分一定要打开。
跑马溜溜的球
2020/12/07
1.3K0
yapi中mock jsonp接口响应的方法
在Heroku中部署一个Sinatra应用程序
在Heroku中部署一个Sinatra应用程序。首先需要在Heroku上注册一个账号,然后创建一个应用程序。接着通过在Gemfile中添加必要的Ruby gems来配置你的应用程序。最后,使用Git将你的应用程序推送到Heroku,并在Heroku上启动该应用程序。
Techeek
2018/01/05
2.6K0
在Heroku中部署一个Sinatra应用程序
Gitlab CI 在 Kubernetes 中的 Docker 缓存
前面我们有文章介绍过如何在 Kubernetes 集群中使用 GitLab CI 来实现 CI/CD,在构建镜像的环节我们基本上都是使用的 Docker On Docker 的模式,这是因为 Kubernetes 集群使用的是 Docker 这种容器运行时,所以我们可以将宿主机的 docker.sock 文件挂载到容器中构建镜像,而最近我们在使用 Kubernetes 1.22.X 版本后将容器运行时更改为了 Containerd,这样节点上没有可用的 Docker 服务了,这个时候就需要更改构建镜像的模式了,当然要实现构建镜像的方式有很多,我们这里还是选择使用 Docker 来构建我们的 Docker 镜像,也就是使用 Docker IN Docker 的模式。
我是阳明
2021/11/17
1.5K0
在Linux上清除内存缓存的方法命令
默认情况下,每个Linux操作系统都有一个高效的内存管理系统,该系统用于定期清除缓冲区高速缓存。您可以使用以下简单命令手动释放内存缓存:
用户5005176
2021/09/08
4.1K0
在java中构建高效的结果缓存
缓存是现代应用服务器中非常常用的组件。除了第三方缓存以外,我们通常也需要在java中构建内部使用的缓存。那么怎么才能构建一个高效的缓存呢? 本文将会一步步的进行揭秘。
程序那些事
2020/07/08
1.5K0
RxJS 在 Angular响应式表单中的使用
FormControl 的 valueChanges 属性和 statusChanges 属性包含了会发出变更事件的可观察对象。 例子
mafeifan
2019/03/04
5.1K0
React 中获取数据的 3 种方法:哪种最好?
在执行 I/O 操作(例如数据提取)时,要先发送网络请求,然后等待响应,接着将响应数据保存到组件的状态,最后进行渲染。
前端小智@大迁世界
2019/11/08
3.6K0
在 Confluence 中启用 HTTP 响应压缩
Confluence 能够支持 HTTP 的 GZip 传输编码。这个意味着 Confluence 将可以把数据压缩后传输给用户,这种配置能够针对不稳定的互联网状态下的传输速度缓慢和不稳定并且能够降低 Confluence 服务器的带宽的消耗。
HoneyMoose
2019/01/30
1.1K0
脚本负责在响应完成时调用processResponse()方法
【注意】XMLHttpRequest对象的设计目的是为了处理由普通文本或XML组成的响应;但是,一个响应也可能是另外一种类型,如果用户代理(UA)支持这种内容类型的话。
用户7718188
2021/10/08
8950
HTTP详解(2)-请求、响应、缓存
做过Socket编程的人都知道,当我们设计一个通信协议时,“消息头/消息体”的分割方式是很常用的,消息头告诉对方这个消息是干什么的,消息体告诉对方怎么干。HTTP协议传输的消息也是这样规定的,每一个HTTP包都分为HTTP头和HTTP体两部分,消息体是可选的,而消息头是必须的。每当我们打开一个网页,在上面点击右键,选择“查看源文件”,这时看到的HTML代码就是HTTP的消息体,那么消息头可以通过浏览器的开发工具或者插件可以看到,如果火狐的Firebug,IE的Httpwatch。
黄规速
2022/04/15
2.3K0
HTTP详解(2)-请求、响应、缓存
在WebFlux中自定义异常响应
在web中可以使用@ControllerAdvice即可编写统一异常响应,在webFlux下则是另一种编写方式。
Diuut
2022/11/22
1.8K0
Linux中通过缓存DNS的解析来提高上网的响应速度!
看上去是等待DNS服务器对域名的解析,闲来无事, 于是 决定做个DNS Cache来提高上网速度!
用户1685462
2021/07/18
3.7K0
在Spring Boot中实现HTTP缓存
幸运的是,Java附带了第一个这些格式的预定义格式化程序。可以在下面找到将标题设置为当天结束的示例。
lyb-geek
2018/12/07
5.3K0
C# 程序在 Docker 中响应 Unix 信号
在 Docker Entry Script 详解中介绍了如何在 shell 脚本中响应 Unix 信号量来实现 Docker 应用优雅的关闭退出, 本文介绍 C# 程序如何在 Docker 中响应 Unix 信号实现优雅的关闭退出。
beginor
2020/08/10
1.6K0
缓存系统在游戏业务中的特异性
韩伟
2017/01/06
3.3K0
缓存系统在游戏业务中的特异性
点击加载更多

相似问题

在PHP中缓存对象的最好方法?

21

Sinatra中的缓存变量

12

在Sinatra缓存twitter gem tweet的简单方法?

12

在php中缓存文件的最好方法是什么?

22

缓存MySQL结果的最好方法?

41
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文