c# - Gridview DataKey 的空引用异常

标签 c# asp.net gridview oledb

在这个网站上,我尝试通过在 gridview 行上进行选择来在数据库中插入一行。除了从 GridView 收集主键之外,我的一切都运行良好。我已经尝试了所有我能找到的方法都无济于事。到目前为止,我还不太熟悉这种语言,但我的代码如下:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    string connectionString = ConfigurationManager.ConnectionStrings["sdsMicrosoftDB"].ConnectionString;
    OleDbConnection currentConnection = new OleDbConnection(connectionString);

    string eventID = GridView1.SelectedValue.ToString();

    try
    {
        string eid = Session["eid"].ToString();

        OleDbCommand cmd = new OleDbCommand();
        cmd.CommandText = "INSERT INTO tblVolunteerRoster (eventID,empID) VALUES (@eventID,@empID)";
        cmd.CommandType = CommandType.Text;
        cmd.Connection = currentConnection;

        cmd.Parameters.AddWithValue("@eventID", eventID);
        cmd.Parameters.AddWithValue("@empID", eid);
        currentConnection.Open();

        cmd.ExecuteNonQuery();
    }

特定于该 gridview 的代码是:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                DataSourceID="AccessDataSource1" CellPadding="4" ForeColor="#333333" 
                GridLines="None" HorizontalAlign="Center"
                onrowcommand="GridView1_RowCommand" DataKeyNames="eventID" >
                <AlternatingRowStyle BackColor="White" />

                <Columns>
                    <asp:CommandField ShowSelectButton="True" />
                    <asp:BoundField ApplyFormatInEditMode="True" DataField="eventID" 
                        HeaderText="Event ID" SortExpression="eventID" />
                    <asp:BoundField DataField="eventStartDate" HeaderText="Start Date" 
                        SortExpression="eventStartDate" DataFormatString="{0:MMM dd yyyy}" 
                        ApplyFormatInEditMode="True" />
                    <asp:BoundField DataField="eventDescription" HeaderText="Description" 
                        SortExpression="eventDescription" />
                    <asp:BoundField DataField="eventEstHours" HeaderText="Est. Hours" 
                        SortExpression="eventEstHours" />
                    <asp:BoundField DataField="eventLocation" HeaderText="Location" 
                        SortExpression="eventLocation" />
                    <asp:BoundField DataField="eventWorkersNeeded" HeaderText="Workers Needed" 
                        SortExpression="eventWorkersNeeded" />
              </Columns>

            </asp:GridView>

有什么想法吗?我曾把头撞在墙上,试图自己解决这个问题。提前致谢!

最佳答案

如果你想获取datakeyname

int index = Convert.ToInt32(e.CommandArgument);
string eventID = GridView1.DataKeys[index].Value.ToString()

关于c# - Gridview DataKey 的空引用异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13949718/

相关文章:

c# - 为什么属性(property)访问比成员(member)访问慢

c# - 计算两个日期之间天数的代码

c# - GridView 单元格未在 RowCommand 事件上注册任何控件

c# - ASP :ImageButton OnClick event not firing in IE

c# - C#中如何从DataGridView中获取选中的行内容?

c# - 在 64 位操作系统上的进程内 wmi 提供程序(32 位)中加载 native dll(32 位)

c# - 如何从 C# 访问 PowerShell 主机

c# - 如何在 DbContext 中的 SaveChanges 中向关系(连接表)添加自定义处理?

asp.net - 客户端可以取消 Web Api 请求吗?

c# - 如何在 asp.net 中停止页面加载时的数据绑定(bind)