zoukankan      html  css  js  c++  java
  • GridView实现单选(Single Selection)

    一直很想写一个Gridview内实现单选功能,但是一直没有太多时间,近段时间多个网友问及此功能,只好抽出些少时间来实现,下面为实现过程。

    效果如下,把选择的值使用javascript Alert:

    数据源,在可用的数据库内创建一个表[Member] 并插入三笔测试记录:

    View Code
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    IF OBJECT_ID ('[dbo].[Member]'IS NOT NULL
    DROP TABLE [dbo].[Member]

    GO

    CREATE TABLE [dbo].[Member](
        
    [MemberId] [int] IDENTITY(1,1NOT NULL,
        
    [Name] [nvarchar](50NULL,
        
    [Email] [nvarchar](100NULL,
     
    CONSTRAINT [PK__Member__0CF04B187F60ED59] PRIMARY KEY CLUSTERED 
    (
        
    [MemberId] ASC
    )
    WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ONON [PRIMARY]
    ON [PRIMARY]

    GO
    INSERT INTO [dbo].[Member] ([Name],[Email]VALUES ('John','john@it.com')
    INSERT INTO [dbo].[Member] ([Name],[Email]VALUES ('Jeny','Jeny@it.com')
    INSERT INTO [dbo].[Member] ([Name],[Email]VALUES ('Mike','Mike@it.com')

    存过程:

    View Code
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    IF OBJECT_ID ('[dbo].[usp_GetMember]'IS NOT NULL
    DROP PROCEDURE [dbo].[usp_GetMember]
    GO

    CREATE PROCEDURE [dbo].[usp_GetMember]
    AS
    SELECT [MemberId],[Name],[Email] FROM [dbo].[Member]
    GO

    Member.cs 类别:

    View Code
    sing System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Web;

    /// <summary>
    /// Summary description for Member
    /// </summary>
    namespace Insus.NET
    {
        
    public class Member
        {
            BusinessBase objBusinessBase 
    = new BusinessBase();

            
    public Member()
            {
                
    //
                
    // TODO: Add constructor logic here
                
    //
            }

            
    public DataTable GetMember()
            {
                
    return objBusinessBase.GetDataToDataSet("usp_GetMember").Tables[0];
            }
        }
    }

    GridviewSingleSelection.aspx:

    View Code
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridviewSingleSelection.aspx.cs"
        Inherits
    ="GridviewSingleSelection" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        
    <title></title>
    </head>
    <body>
        
    <form id="form1" runat="server">
        
    <asp:ScriptManager ID="ScriptManager1" runat="server">
        
    </asp:ScriptManager>
        
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            
    <ContentTemplate>
                
    <div>
                    
    <asp:Button ID="ButtonSingleSelect" runat="server" Text="GetGridViewRasioSelectedValue" OnClick="ButtonSingleSelect_Click" />
                    
    </>
                    
    <!--Insus.NET:GridView有一个事件OnRowDataBound -->
                    
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="GridView1_RowDataBound">
                        
    <Columns>
                            
    <asp:TemplateField HeaderText="选择">
                                
    <HeaderStyle BorderWidth="1" BorderColor="#c0c0c0" />
                                
    <ItemStyle BorderWidth="1" BorderColor="#c0c0c0" />
                                
    <ItemTemplate>
                                   
    <!--Insus.NET:这里是重点部分,使用Literal控件装载HtmlInputRadioButton -->
                                    
    <asp:Literal ID="Literal1" runat="server"></asp:Literal>
                                
    </ItemTemplate>
                            
    </asp:TemplateField>
                            
    <asp:TemplateField HeaderText="ID">
                                
    <HeaderStyle BorderWidth="1" BorderColor="#c0c0c0" />
                                
    <ItemStyle BorderWidth="1" BorderColor="#c0c0c0" />
                                
    <ItemTemplate>
                                    
    <%Eval("MemberId"%>
                                
    </ItemTemplate>
                            
    </asp:TemplateField>
                            
    <asp:TemplateField HeaderText="Name">
                                
    <HeaderStyle BorderWidth="1" BorderColor="#c0c0c0" />
                                
    <ItemStyle BorderWidth="1" BorderColor="#c0c0c0" />
                                
    <ItemTemplate>
                                    
    <%Eval("Name"%>
                                
    </ItemTemplate>
                            
    </asp:TemplateField>
                            
    <asp:TemplateField HeaderText="Email">
                                
    <HeaderStyle BorderWidth="1" BorderColor="#c0c0c0" />
                                
    <ItemStyle BorderWidth="1" BorderColor="#c0c0c0" />
                                
    <ItemTemplate>
                                    
    <%Eval("Email"%>
                                
    </ItemTemplate>
                            
    </asp:TemplateField>
                        
    </Columns>
                    
    </asp:GridView>
                
    </div>
            
    </ContentTemplate>
        
    </asp:UpdatePanel>
        
    </form>
    </body>
    </html>

    GridviewSingleSelection.aspx.cs:

    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Insus.NET;  //Insus.NET:要引用名称空间

    public partial class GridviewSingleSelection : System.Web.UI.Page
    {
        
    //Insus.NET: new Member一个实例
        Member objMember = new Member();

        
    protected void Page_Load(object sender, EventArgs e)
        {
            Data_Binding();
        }

        
    private void Data_Binding()
        {
            
    this.GridView1.DataSource = objMember.GetMember();
            
    this.GridView1.DataBind();

        }
        
    protected void ButtonSingleSelect_Click(object sender, EventArgs e)
        {
           
    //Insus.NET: 判断用户是否有选择,如果没有选择return
            if (Request.Form["InsusRadio1"== nullreturn;

            
    //Insus.NET: 把选择的值存到ViewState,你可以把它存任何可以保留的变量中,呵呵
            ViewState["SelectedValue"]= Request.Form["InsusRadio1"].ToString();    
            
    //Insus.NET: 下面类别,你可以从Insus.NET博客中下载
            InsusJsUtility objJs = new InsusJsUtility();

            objJs.JsAlert(ViewState[
    "SelectedValue"].ToString());
        }

        
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            
    if (e.Row.RowType == DataControlRowType.DataRow)
            {
               
    //Insus.NET: 判断Literal控件是否存在,如果没有写此判断,程式有可能在找不到时抛出异常
                if (e.Row.FindControl("Literal1"!= null)
                {
                    
    //Insus.NET:找到了,把对象转为控件。
                    Literal literal = (Literal)e.Row.FindControl("Literal1");

                    
    //Insus.NET: 下面这个是把表主键的值赋给变量value。如果你想取GridView的索引,可以使用e.Row.RowIndex.ToString()
                    string value = DataBinder.Eval(e.Row.DataItem, "MemberId").ToString(); //e.Row.RowIndex.ToString();

                    
    //Insus.NET: 把HtmlInputRadioButton绑定至Literal控件上。
                    literal.Text = "<input id=\"InsusRadio1\" type=\"radio\" name=\"InsusRadio1\" value=\"" + value + "\" />";
                }
            }
        }
    }

    好了,时间问题不再作过多讲解,如还有问题,请联系Insus.NET,程序重点部分有详细的注解。

  • 相关阅读:
    jenkins使用
    pytest+allure生成接口自动化测试报告
    charles系列
    go语言安装使用
    go语言介绍
    Nginx
    python面试题-python相关
    pyhon全栈开发学习目录
    补充【第二章】supervisor守护进程保障服务
    python全栈开发基础【补充】python中列表排序,字典排序,列表中的字典排序
  • 原文地址:https://www.cnblogs.com/insus/p/2029383.html
Copyright © 2011-2022 走看看