C# 如何获取对应于复选框的行,然后写出值?

C# 如何获取对应于复选框的行,然后写出值?,c#,asp.net,visual-studio,gridview,checkbox,C#,Asp.net,Visual Studio,Gridview,Checkbox,各位程序员好 现在我有一个网页,通过网格视图显示数据表。这个很好用。我还在视图的开头插入了一列复选框。这也很好用。但是,当我试图从选中相应复选框的行中的单元格中检索信息时,会得到一个空字符串 以下是我的代码中与此问题相关的部分: .aspx: protected void Page_Load(object sender, EventArgs e) { if (Page.IsPostBack) { return;

各位程序员好

现在我有一个网页,通过网格视图显示数据表。这个很好用。我还在视图的开头插入了一列复选框。这也很好用。但是,当我试图从选中相应复选框的行中的单元格中检索信息时,会得到一个空字符串

以下是我的代码中与此问题相关的部分:

.aspx:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack)
        {
            return;
        }
        else
        {

        }

        //server connections and whatnot//

        OleDbCommand c0 = new OleDbCommand(sql0, myConnection);
        myAdapter.SelectCommand = c0;
        DataSet ds0 = new DataSet("Contacts");
        myAdapter.Fill(ds0);
        DataTable dt0 = new DataTable(); 
        dt0 = ds0.Tables["Contacts"];
        DataView view = new DataView();
        view.Table = dt0;
        GV0.DataSource = view;
        GV0.DataBind();

        myConnection.Close();
    }
.cs:

任何帮助都将不胜感激


干杯

只是一个想法,但在foreach循环中,您可能需要检查正在循环的当前行的RowType属性,并确保它设置为DataRow。或者,您可以使用LINQ语句仅返回RowType==DataRow的行,并在该行上循环

更新这里是我的意思的一个快速示例。但是在查看代码时,gridview的第二个单元格中似乎没有任何文本,事实上,根据您提供的代码,gridview只有一个单元格

public void Dedupe(Object o, EventArgs e)
{
    String output = "start ";
    IEnumerable<GridViewRow> rows = from r in GV0.Rows
                                    where r.RowType == DataControlRowType.DataRow
                                    select r;
    foreach (GridViewRow row in rows)
    {
        CheckBox cb = (CheckBox)row.FindControl("CheckBox1");
        if (cb.Checked)
        {
            output += row.Cells[1];
        }
    }
    Label1.Text = output;
}
public void重复数据消除(对象o、事件参数e)
{
字符串输出=“开始”;
IEnumerable rows=从GV0.rows中的r开始
其中r.RowType==DataControlRowType.DataRow
选择r;
foreach(GridViewRow行中的行)
{
复选框cb=(复选框)row.FindControl(“复选框1”);
如果(cb.选中)
{
输出+=行单元格[1];
}
}
Label1.Text=输出;
}

您可以发布用于控件数据绑定的代码吗?我想知道您是否正在重新绑定回发上的控件。如果是这样,将阻止您看到对控件所做的任何更改。@rsbarro当我尝试在PageLoad方法中绑定CheckBox1时,它说它没有在此上下文中声明。
GV0
如何获取其数据?我假设
GV0.DataSource=something;GV0.DataBind()?你能在发生这种情况的地方发布方法吗?@rsbarro DataView=new DataView();view.Table=dt0;GV0.DataSource=视图;GV0.DataBind()@JackeryXu:你应该尝试的第一件事就是把你的网格绑定代码放进去!如果您通过触发任何服务器端事件来获取选中的复选框ID,则ispostback会阻止。第二件事,将row.Cells[1]更改为row.Cells[1]。否则您将获得System.Web.UI.WebControl.DataControlFieldCell。我想我知道您的意思。row目前为GridViewRow类型。我试着用:row=(DataRow)row解析它;但它不会让我。这可能是我得到空字符串的原因吗?
public void Dedupe(Object o, EventArgs e)
{
    String output = "start ";
    IEnumerable<GridViewRow> rows = from r in GV0.Rows
                                    where r.RowType == DataControlRowType.DataRow
                                    select r;
    foreach (GridViewRow row in rows)
    {
        CheckBox cb = (CheckBox)row.FindControl("CheckBox1");
        if (cb.Checked)
        {
            output += row.Cells[1];
        }
    }
    Label1.Text = output;
}