带有私有字段的GridView控件。我想绑定Gridview

时间:2012-10-19 19:15:06

标签: c# asp.net gridview

public class VivaClass{
public VivaClass()
{
    StudentObJ = new StudentClass();
    StudentObJ.SetGetDGroupID = "";
    StudentObJ.SetGetDUserName = "";
    StudentObJ.SetGetDProjectName = "";
    StudentObJ.SetGetDCity = "";
    this.Date = "";
    this.Time = "";
    this.isMake = false;
}
public VivaClass(string date, string time, bool isMake, string Gid, string uName, string Prjct, string city)
{
    StudentObJ = new StudentClass(Gid, uName, Prjct, city);
    this.Date = date;
    this.Time = time;
    this.isMake = isMake;
}
public VivaClass(string date, string time, bool isMake, string uName,string city)
{
    StudentObJ = new StudentClass();
    StudentObJ.SetGetDUserName = uName;
    this.Date = date;
    this.Time = time;
    this.isMake = isMake;
    this.SetGetStudentObJ.SetGetDCity = city;
}
private StudentClass StudentObJ;

public StudentClass SetGetStudentObJ
{
    get { return StudentObJ; }
    set { StudentObJ = value; }
}
public int ID;

public int SetGet_ID
{
    get { return ID; }
    set { ID = value; }
}

private string Date;

public string SetGetDate
{
    get { return Date; }
    set { Date = value; }
}
private string Time;

public string SetGetDTime
{
    get { return Time; }
    set { Time = value; }
}
private bool isMake;

public bool SetGetDIsMake
{
    get { return isMake; }
    set { isMake = value; }
}

}

public List<VivaClass> ReturnVivaObj()
{
    List<VivaClass> Objlst = new List<VivaClass>();
    VivaClass obj = null;
    try
    {
        SqlConnection hookup = new SqlConnection(new ConnectionString().GetConString(("SqlConString")));
        string query = "Select ID,GroupID,StudentName,ProjectName,City,Date,Time,isMake FROM SchedualTB";
        SqlCommand cmd = new SqlCommand(query, hookup);
        hookup.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            obj = new VivaClass();
            obj.SetGet_ID = Convert.ToInt32(dr["ID"]);
            obj.SetGetStudentObJ.SetGetDGroupID = Convert.ToString(dr["GroupID"]);
            obj.SetGetStudentObJ.SetGetDStudentName = Convert.ToString(dr["StudentName"]);
            obj.SetGetStudentObJ.SetGetDProjectName = Convert.ToString(dr["ProjectName"]);
            obj.SetGetStudentObJ.SetGetDCity = Convert.ToString(dr["City"]);
            obj.SetGetDate = dr["Date"].ToString();
            obj.SetGetDTime = dr["Time"].ToString();
            obj.SetGetDIsMake = Convert.ToBoolean(dr["isMake"].ToString());
            Objlst.Add(obj);
        }
    }
    catch (Exception e)
    {
        throw e;
    }
    return Objlst;
}

标记

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" onrowediting="GridView1_RowEditing">
    <Columns>
        <asp:TemplateField HeaderText="Group ID">
        <ItemTemplate>
        <asp:Label ID="lblGroupID" runat="server" Text='<%# Eval("GroupID") %>' ></asp:Label>
        </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Student ID">
        <ItemTemplate>
        <asp:Label ID="lblUserName" runat="server" Text='<%# Eval("UserName") %>' ></asp:Label>
        </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Student Name">
        <ItemTemplate>
        <asp:Label ID="lblStudentName" runat="server" Text='<%# Eval("StudentName") %>' ></asp:Label>
        </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Project Name">
        <ItemTemplate>
        <asp:Label ID="lblProjectName" runat="server" Text='<%# Eval("ProjectName") %>' ></asp:Label>
        </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField ItemStyle-HorizontalAlign="Right" HeaderText="Status" >
            <ItemTemplate>
                 <asp:ImageButton ID="imgStatus" runat="server" CommandName="Edit" ToolTip="Change User status"  ImageUrl="~/Image/logo/statusActive.png"></asp:ImageButton>
            </ItemTemplate>
            </asp:TemplateField>
    </Columns>
</asp:GridView>

GridView绑定代码

private void FillGrid()
{
    GridView1.DataSource = new StudentIdentity().ReturnVivaObj();
    GridView1.DataBind();

}

我正在尝试绑定数据,但异常抛出VivaClass不包含名称为'ID'的属性。我不知道如何通过代码绑定。可以任何一次给我任何链接或解决方案。感谢

3 个答案:

答案 0 :(得分:2)

我认为你的问题是ID实际上是试图绑定到gridView。将public int ID;更改为public int ID { get;set;}或将SetGet_ID绑定到gridView而不是ID

祝你好运!

答案 1 :(得分:1)

在网格视图声明中尝试提供“SetGet_ID”而不是“ID”,如下所示

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="SetGet_ID" ...>

希望这有助于!!

答案 2 :(得分:0)

考虑通过以下类比重新编写代码和标记:

public class VivaClass
{
    public VivaClass()
    {
        StudentObJ = new StudentClass();
        StudentObJ.GroupID = "";
        StudentObJ.UserName = "";
        StudentObJ.ProjectName = "";
        StudentObJ.City = "";
        this.Date = "";
        this.Time = "";
        this.isMake = false;
    }

    public VivaClass(string date, string time, bool isMake, string Gid, string uName, string Prjct, string city)
    {
        StudentObJ = new StudentClass(Gid, uName, Prjct, city);
        this.Date = date;
        this.Time = time;
        this.isMake = isMake;
    }
    public VivaClass(string date, string time, bool isMake, string name, string city)
    {
        Student = new StudentClass();
        Student.UserName = name;
        Student.City = city;
        Date = date;
        Time = time;
        IsMake = isMake;
    }

    public StudentClass Student { get; set; }

    public int ID { get; set; }

    public string Date { get; set; }

    public string Time { get; set; }

    public bool IsMake { get; set; }

    public IEnumerable<VivaClass> Vivas()
    {
        using (SqlConnection connection = new SqlConnection(new ConnectionString().GetConString(("SqlConString"))))
        {
            string query = "Select ID,GroupID,StudentName,ProjectName,City,Date,Time,isMake FROM SchedualTB";
            SqlCommand cmd = new SqlCommand(query, connection);
            connection.Open();
            using (SqlDataReader dr = cmd.ExecuteReader())
            {
                while (dr.Read())
                {
                    VivaClass obj = new VivaClass();
                    obj.ID = (int(dr["ID"];
                    obj.Student.GroupID = (string)dr["GroupID"];
                    obj.Student.StudentName = (string)dr["StudentName"];
                    obj.Student.ProjectName = (string)dr["ProjectName"];
                    obj.Student.City = (string)dr["City"];
                    obj.Date = (string)dr["Date"].ToString();
                    obj.Time = (string)dr["Time"];
                    obj.IsMake = (bool)dr["isMake"];
                    yield return obj;
                }
            }
        }
    }    
}

标记:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" onrowediting="GridView1_RowEditing">
    <Columns>
        <asp:TemplateField HeaderText="Group ID">
            <ItemTemplate>
                <asp:Label ID="lblGroupID" runat="server" Text='<%# Eval("GroupID") %>' />
             </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Student ID">
            <ItemTemplate>
                <asp:Label ID="lblUserName" runat="server" Text='<%# Eval("UserName") %>' />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Student Name">
            <ItemTemplate>
                <asp:Label ID="lblStudentName" runat="server" Text='<%# Eval("StudentName") %>' />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Project Name">
            <ItemTemplate>
                <asp:Label ID="lblProjectName" runat="server" Text='<%# Eval("ProjectName") %>' />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField ItemStyle-HorizontalAlign="Right" HeaderText="Status" >
            <ItemTemplate>
                 <asp:ImageButton ID="imgStatus" runat="server" CommandName="Edit" ToolTip="Change User status" ImageUrl="~/Image/logo/statusActive.png" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>