これは私のグリッドビューがどのように見えるかです:
activityID and taskID
データベースから削除するには値が必要なため、表示を false に設定した非表示の列がある選択した行を削除する必要があります。を使用してデータベースから削除する必要がありますQuestionNo , activityID and taskID
。
ActivityID and TaskID is hidden
、実際には次のようになります。
QuestionNo、ActivtiyID、TaskID、QuestionContent を削除します。
コード :
protected void gvQuestion_RowCommand(object sender, GridViewCommandEventArgs e)
{
}
protected void gvQuestion_RowDeleted(object sender, GridViewDeletedEventArgs e)
{
}
protected void LinkButton1_Click(object sender, EventArgs e)
{
}
protected void gvQuestion_RowDeleting1(object sender, GridViewDeleteEventArgs e)
{
gvQuestion.DeleteRow(e.RowIndex);
Model.question del = new Model.question();
int q = Convert.ToInt32(gvQuestion.Rows[e.RowIndex].Cells[0].ToString());
int a = Convert.ToInt32(gvQuestion.Rows[e.RowIndex].Cells[1].ToString()); // Hidden Column
int t = Convert.ToInt32(gvQuestion.Rows[e.RowIndex].Cells[2].ToString()); // Hidden Column
del.QuestionNo = q;
del.ActivityID = a;// Value of ActivityID column in GV
del.TaskID = t; // Value of TaskID column in GV
daoQuestion.Delete(del);
daoQuestion.Save();
}`
私が知っていることから、削除ボタンが押されると OnRowDeleting イベントが発生するので、そこに削除コードを入れますが、削除しようとすると接続がリセットされ、 q 、 a 、 t の値は null です。ここで何が問題になったのですか? 、削除ボタンが機能していません..助けてください、ありがとう。私はこれを行うためにEFを使用しています...
aspx は次のとおりです。
<asp:GridView ID="gvQuestion" runat="server"
AutoGenerateColumns="False"
onselectedindexchanged="gvQuestion_SelectedIndexChanged"
onrowcommand="gvQuestion_RowCommand" onrowdeleted="gvQuestion_RowDeleted" onrowdeleting="gvQuestion_RowDeleting1"
>
<Columns>
<asp:BoundField DataField="QuestionNo" HeaderText="QuestionNo"
InsertVisible="False" ReadOnly="True" SortExpression="QuestionNo" />
<asp:BoundField DataField="ActivityID" HeaderText="ActivityID"
SortExpression="ActivityID" Visible="False" />
<asp:BoundField DataField="TaskID" HeaderText="TaskID"
SortExpression="TaskID" Visible="False" />
<asp:BoundField DataField="joined" HeaderText="QuestionContent"
SortExpression="joined" >
<ControlStyle Width="150px" />
</asp:BoundField>
<asp:TemplateField>
<ItemTemplate>
<span onclick="return confirm('Are you sure to Delete the record?')">
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="Delete"
onclick="LinkButton1_Click" CommandArgument="Delete">Delete</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
データ キーを使用する場合 (これが正しい方法である場合はわかりません):
aspx:
DataKeyNames="QuestionNo,ActivityID,TaskID"
コードビハインド:
protected void gvQuestion_RowDeleting1(object sender, GridViewDeleteEventArgs e)
{
GridView gvQuestion = (GridView)sender;
int row = e.RowIndex;
int q = Convert.ToInt32(gvQuestion.DataKeys[row].Value[0].ToString());
int a= Convert.ToInt32(gvQuestion.DataKeys[row].Value[1].ToString());
int t = Convert.ToInt32(gvQuestion.DataKeys[row].Value[2].ToString()); // I assume that value 0 , 1 , 2 is according to the columns , not really sure on this.
/* Model.question del = new Model.question();
del.QuestionNo = q;
del.ActivityID = a;// Value of ActivityID column in GV
del.TaskID = t; // Value of TaskID column in GV
daoQuestion.Delete(del);
daoQuestion.Save();
gvQuestion.DataBind(); */
}
値を取得しようとしているだけなので、削除コードをコメントアウトします..デバッグで値を確認し、 0 を返します。これは正しい方法ですか?