如何在文本框中输入指数选择网格视图行 [英] how to select grid view row by entering index in a text box

查看:121
本文介绍了如何在文本框中输入指数选择网格视图行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我工作在asp.net C#中的Web应用程序。我的项目是给G邮箱的邮件下载并显示在view.i已经下载的邮件,并显示在网格view.in我的网站网格只选择使用键盘keys.i需要从网格视图中的每一行,而不所有控件鼠标点击,只需输入在文本框中行索引然后重定向到另一个page.i试过code在另一个网格视图和它的方法加工的
<一href=\"http://stackoverflow.com/questions/18503000/how-select-grid-view-row-by-entering-index-in-a-text-box\">how通过在文本框中输入选择指数网格视图行
但是当我采用了同一code在我的项目它不工作

下面是我的code

inbox.aspx

 &LT; ASP:标签ID =lblusername=服务器FONT-粗体=真FONT-SIZE =X-LARGE
    前景色=#A2979E&GT;&LT; / ASP:标签&gt;
    &LT; BR /&GT;
    &LT; ASP:文本框=服务器ID =txtindex&GT;&LT; / ASP:文本框&GT;
    &LT; ASP:按钮=服务器文本=阅读邮件ID =btnread
    的onclick =btnread_Click/&GT;
    &LT; ASP:标签ID =Label1的=服务器文本=标签&GT;&LT; / ASP:标签&gt;
&LT; ASP:标签ID =Label2的=服务器文本=标签&GT;&LT; / ASP:标签&gt;
    &LT; BR /&GT;
    &LT; ASP:GridView控件ID =gvinbox=服务器的AutoGenerateColumns =假
    ShowFooter =假HEIGHT =103pxWIDTH =795px边框​​=实
    字体粗体=真FONT-名称=世纪的哥特式的cellpadding =7
    风格=保证金右:0像素&GT;
    &LT;柱体和GT;
    &LT; ASP:BoundField的的HeaderText =FROM数据字段=从/&GT;
    &LT; ASP:HyperLinkField字段的HeaderText =SUBJECTDataNavigateUrlFields =MessageNumberDataNavigateUrlFormatString =?〜/ Showmessage.aspx MessageNumber = {0}目标=_空白DataTextField =主题/&GT;
    &LT; ASP:BoundField的的HeaderText =DATE数据字段=DateSent/&GT;
    &LT; /专栏&GT;
    &LT; / ASP:GridView的&GT;

inbox.aspx.cs

 保护无效的Page_Load(对象发件人,EventArgs的发送)
    {        Pop3Client pop3Client;
        如果(会话[Pop3Client] == NULL)
        {
            pop3Client =新Pop3Client();
            pop3Client.Connect(pop.gmail.com,int.Parse(995),TRUE);
            pop3Client.Authenticate(abc@gmail.com,123456);
            会话[Pop3Client] = pop3Client;
        }
        其他
        {
            pop3Client =(Pop3Client)会议[Pop3Client];
        }
        诠释计数= pop3Client.GetMessageCount();
        数据表dtMessages =新的DataTable();
        dtMessages.Columns.Add(MessageNumber);
        dtMessages.Columns.Add(从);
        dtMessages.Columns.Add(主题);
        dtMessages.Columns.Add(DateSent);
        dtMessages.Columns.Add(附件);
        INT计数器= 0;
        的for(int i =计数; I&GT; = 1;我 - )
        {
            消息消息= pop3Client.GetMessage(I)
            dtMessages.Rows.Add();
            dtMessages.Rows [dtMessages.Rows.Count - 1] [MessageNumber] =我;
            dtMessages.Rows [dtMessages.Rows.Count - 1] [从] = message.Headers.From.Address;
            dtMessages.Rows [dtMessages.Rows.Count - 1] [主题] = message.Headers.Subject;
            dtMessages.Rows [dtMessages.Rows.Count - 1] [DateSent] = message.Headers.DateSent.ToLocalTime();
            反++;
            如果(计数器大于10)
            {
                打破;
            }
        }
        gvinbox.DataSource = dtMessages;
        gvinbox.DataBind();
    }    保护无效btnread_Click(对象发件人,EventArgs的发送)
    {
        INT指数,援助;        如果(int.TryParse(txtindex.Text,出指数)及和放大器;
            int.TryParse((gvinbox.DataKeys [指数] .Value.ToString()),出援助))
        {            的Response.Redirect(的String.Format(Showmessage.aspx MessageNumber = {0}?,援助));
        }
    }


解决方案

你需要给的DataKeyNames =MessageNumber如下

 &LT; ASP:GridView控件ID =gvinbox=服务器的AutoGenerateColumns =假
    ShowFooter =假HEIGHT =103pxWIDTH =795px边框​​=实
    字体粗体=真FONT-名称=世纪的哥特式的cellpadding =7
    风格=保证金右:0像素的DataKeyNames =MessageNumber&GT;

i am working on a web application in asp.net c#. My project is that download mails from g mail and show it in a grid view.i have downloaded mails and displayed in grid view.in my website all the controls are selected only using keyboard keys.i need to select each row from grid view without mouse click by simply enter the row index in a text box then redirect to another page.i tried the code in another grid view and its worked how select grid view row by entering index in a text box but when i applied the same code in my project its not working

Here is my code

inbox.aspx

<asp:Label ID="lblusername" runat="server" Font-Bold="True" Font-Size="X-Large" 
    ForeColor="#A2979E"></asp:Label>
    <br />
    <asp:TextBox runat="server" ID="txtindex"></asp:TextBox>
    <asp:Button runat="server" Text="Read Mail" ID="btnread" 
    onclick="btnread_Click" />
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
    <br />
    <asp:GridView ID="gvinbox" runat="server" AutoGenerateColumns="false" 
    ShowFooter="false" Height="103px" Width="795px" BorderStyle="Solid" 
    Font-Bold="True" Font-Names="Century Gothic" CellPadding="7" 
    style="margin-right: 0px">
    <Columns>
    <asp:BoundField HeaderText="FROM" DataField="From" />
    <asp:HyperLinkField HeaderText="SUBJECT" DataNavigateUrlFields="MessageNumber" DataNavigateUrlFormatString="~/Showmessage.aspx?MessageNumber={0}" Target="_blank" DataTextField="Subject" />
    <asp:BoundField HeaderText="DATE" DataField="DateSent" />


    </Columns>




    </asp:GridView>

inbox.aspx.cs

protected void Page_Load(object sender, EventArgs e)
    {

        Pop3Client pop3Client;
        if (Session["Pop3Client"] == null)
        {
            pop3Client = new Pop3Client();
            pop3Client.Connect("pop.gmail.com", int.Parse("995"), true);
            pop3Client.Authenticate("abc@gmail.com", "123456");
            Session["Pop3Client"] = pop3Client;
        }
        else
        {
            pop3Client = (Pop3Client)Session["Pop3Client"];
        }
        int count = pop3Client.GetMessageCount();
        DataTable dtMessages = new DataTable();
        dtMessages.Columns.Add("MessageNumber");
        dtMessages.Columns.Add("From");
        dtMessages.Columns.Add("Subject");
        dtMessages.Columns.Add("DateSent");
        dtMessages.Columns.Add("Attachment");
        int counter = 0;
        for (int i = count; i >= 1; i--)
        {
            Message message = pop3Client.GetMessage(i);
            dtMessages.Rows.Add();
            dtMessages.Rows[dtMessages.Rows.Count - 1]["MessageNumber"] = i;
            dtMessages.Rows[dtMessages.Rows.Count - 1]["From"] = message.Headers.From.Address;
            dtMessages.Rows[dtMessages.Rows.Count - 1]["Subject"] = message.Headers.Subject;
            dtMessages.Rows[dtMessages.Rows.Count - 1]["DateSent"] = message.Headers.DateSent.ToLocalTime();


            counter++;
            if (counter > 10)
            {
                break;
            }


        }


        gvinbox.DataSource = dtMessages;
        gvinbox.DataBind();
    }



    protected void btnread_Click(object sender, EventArgs e)
    {
        int index, aid;

        if (int.TryParse(txtindex.Text, out index) &&
            int.TryParse((gvinbox.DataKeys[index].Value.ToString()), out aid))
        {

            Response.Redirect(string.Format("Showmessage.aspx?MessageNumber={0}", aid));
        }
    }

解决方案

you need to give DataKeyNames="MessageNumber" as below

<asp:GridView ID="gvinbox" runat="server" AutoGenerateColumns="false" 
    ShowFooter="false" Height="103px" Width="795px" BorderStyle="Solid" 
    Font-Bold="True" Font-Names="Century Gothic" CellPadding="7" 
    style="margin-right: 0px" DataKeyNames="MessageNumber">

这篇关于如何在文本框中输入指数选择网格视图行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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