简体   繁体   English

尽管自动选择了gridview行,但数据仍未显示

[英]Data not displaying out despite auto-selecting gridview row

I'm trying to let the gridview auto-select the first row of data upon page load. 我试图让gridview在页面加载时自动选择数据的第一行。 However, in the gridview, it shows that the first row is being highlighted 但是,在gridview中,它表明第一行被突出显示

在此处输入图片说明

but no data is being displayed in my textbox. 但我的文本框中没有显示任何数据。 The data only appears when i click the select button in my gridview again. 仅当我再次单击gridview中的选择按钮时,数据才会出现。

This is how i added the auto-select gridview row in my page load 这就是我在页面加载中添加自动选择gridview行的方式

protected void Page_Load(object sender, EventArgs e)
    {          
        if (!IsPostBack)
            {
                 gvnric.SelectedIndex = 0;
            }
        }

This is how i get my data from my gridview to my textbox 这是我将数据从gridview获取到文本框的方式

protected void gvnric_SelectedIndexChanged(object sender, EventArgs e)
    {
        Session["nric"] = gvnric.SelectedRow.Cells[1].Text;


        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        con.Open();
        SqlCommand cm = new SqlCommand("Select fullname, contact, address, email From MemberAccount Where nric = '" + Session["nric"] + "'", con);
        SqlDataReader dr;
        dr = cm.ExecuteReader();
        if (dr.Read())
        {
            txtFullName.Text = dr["fullname"].ToString();
            txtAddress.Text = dr["contact"].ToString();
            txtContact.Text = dr["address"].ToString();
            txtEmail.Text = dr["email"].ToString();
        }
        con.Close();

        Image1.Attributes["src"] = "MemberNricCard.aspx?";
        Image1.Attributes["height"] = "200";
        Image1.Attributes["width"] = "200";
    }

But what could possibly caused the data not to be displayed when the first row already being selected upon page load. 但是,当页面加载时已经选择了第一行时,可能导致数据不显示的原因。

I would Re Factor the code as below : 我将分解代码如下:

PageLoad 页面加载

if (!IsPostBack)
{
     gvnric.SelectedIndex = 0;
     LoadFormFields();
}

gvnric_SelectedIndexChanged gvnric_SelectedIndexChanged

protected void gvnric_SelectedIndexChanged(object sender, EventArgs e)
{
    LoadFormFields();
}

and create LoadFormFields with what you have in gvnric_SelectedIndexChanged 并使用LoadFormFields中的内容创建gvnric_SelectedIndexChanged

You can just call your gridview code in the page load 您可以只在页面加载中调用gridview代码

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            {

                gvnric.SelectedIndex = 0;
                gvnric_SelectedIndexChanged(this, EventArgs.Empty);
            }
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM