2

このサイトでは、グリッドビューの行を選択して、データベースに行を挿入しようとしています。グリッドビューから主キーを収集することを除いて、すべてがうまく機能しています。私は見つけることができるすべてを試しましたが、役に立ちませんでした。私はまだこの言語に慣れていませんが、私のコードは次のとおりです。

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();
    }

そのグリッドビューに固有のコードは次のとおりです。

<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>

何か案は?私は自分でそれを理解しようとして頭を壁にぶつけました。前もって感謝します!

4

1 に答える 1

3

データキー名を取得したい場合

int index = Convert.ToInt32(e.CommandArgument);
string eventID = GridView1.DataKeys[index].Value.ToString()
于 2012-12-19T10:00:54.133 に答える