Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Listview无法选择最后一行_C#_Visual Studio_Listview_Select - Fatal编程技术网

C# Listview无法选择最后一行

C# Listview无法选择最后一行,c#,visual-studio,listview,select,C#,Visual Studio,Listview,Select,我有一个asp.net ListView,当我单击select linkbutton选择行并将数据的id传递给detailsview时,我需要它。它传递除最后一条记录外的所有记录的id。有什么原因吗 <asp:ListView ID="ListView1" runat="server" DataKeyNames="AnswerID" OnSelectedIndexChanging="ListView1_SelectedIndexChanging"> <Empty

我有一个asp.net ListView,当我单击select linkbutton选择行并将数据的id传递给detailsview时,我需要它。它传递除最后一条记录外的所有记录的id。有什么原因吗

    <asp:ListView ID="ListView1" runat="server" DataKeyNames="AnswerID" OnSelectedIndexChanging="ListView1_SelectedIndexChanging">
    <EmptyDataTemplate>
        <table runat="server" style="">
            <tr>
                <td>
                    No data was returned.
                </td>
            </tr>
        </table>
    </EmptyDataTemplate>
    <ItemTemplate>
        <tr style="">
            <td>
                <asp:LinkButton ID="SelectButton" runat="server" CommandName="Select" Text="Select" />
            </td>
            <td>
                <asp:Label ID="Label1" runat="server" Text='<%# Eval("AnswerID") %>'></asp:Label>
            </td>
            <td>
                <asp:Label ID="Question" runat="server" Text='<%# Eval("QuestionText") %>' />
            </td>
            <td>
                <asp:Label ID="UserAnswer" runat="server" Text='<%# Eval("UserAnswerTxt") %>' />
            </td>
            <td>
                <asp:Label ID="CorrectAns" runat="server" Text='<%# Eval("CorrectAnswerTxt") %>' />
            </td>
            <td>
                <asp:Image ID="Image1" ImageUrl='<%# Eval("ImagePath") %>' Width="48" Height="48"
                    runat="server" />
            </td>
        </tr>
    </ItemTemplate>
    <LayoutTemplate>
        <table runat="server">
            <tr runat="server">
                <td runat="server">
                    <table id="itemPlaceholderContainer" runat="server" border="0" style="">
                        <tr runat="server" style="">
                            <th runat="server">
                            </th>
                            <th runat="server">
                                AnswerID
                            </th>
                            <th runat="server">
                                QuestionText
                            </th>
                            <th runat="server">
                                UserAnswerTxt
                            </th>
                            <th runat="server">
                                CorrectAnswerTxt
                            </th>
                            <th runat="server">

                            </th>
                            <th runat="server">

                            </th>
                        </tr>
                        <tr id="itemPlaceholder" runat="server">
                        </tr>
                    </table>
                </td>
            </tr>
            <tr runat="server">
                <td runat="server" style="">
                </td>
            </tr>
        </table>
    </LayoutTemplate>
    <SelectedItemTemplate>
        <tr style="">
            <td>
                <asp:LinkButton ID="SelectButton" runat="server" CommandName="Select" Text="Select" />
            </td>
            <td>
                <asp:Label ID="Label1" runat="server" Text='<%# Eval("AnswerID") %>'></asp:Label>
            </td>
            <td>
                <asp:Label ID="Question" runat="server" Text='<%# Eval("QuestionText") %>' />
            </td>
            <td>
                <asp:Label ID="UserAnswer" runat="server" Text='<%# Eval("UserAnswerTxt") %>' />
            </td>
            <td>
                <asp:Label ID="CorrectAns" runat="server" Text='<%# Eval("CorrectAnswerTxt") %>' />
            </td>
            <td>
                <asp:Image ID="Image1" ImageUrl='<%# Eval("ImagePath") %>' Width="48" Height="48"
                    runat="server" />
            </td>
        </tr>
    </SelectedItemTemplate>
</asp:ListView>
<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px" AutoGenerateRows="False"
    DataSourceID="SqlDataSource1">
    <Fields>
        <asp:BoundField DataField="AnswerID" HeaderText="AnswerID" SortExpression="AnswerID" />
        <asp:BoundField DataField="AnswerExplanation" HeaderText="AnswerExplanation" SortExpression="AnswerExplanation" />
        <asp:BoundField DataField="SuggestionText" HeaderText="SuggestionText" SortExpression="SuggestionText" />
        <asp:BoundField DataField="LessonID" HeaderText="LessonID" SortExpression="LessonID" />
    </Fields>
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
    SelectCommand="SELECT [ErDiagID], [AnswerID], [LessonID], [AnswerExplanation], [SuggestionText] FROM [ErrorDiagnosis] WHERE ([AnswerID] = @AnswerID)">
    <SelectParameters>
        <asp:ControlParameter ControlID="ListView1" Name="AnswerID" PropertyName="SelectedValue"
            Type="Int32" />
    </SelectParameters>
</asp:SqlDataSource>
protected void Page_Load(object sender, EventArgs e)
{
     Panel p = (Panel)Master.FindControl("Panel1");

    if (p != null)
    {
        p.Visible = false;
    }

    ArrayList al = (ArrayList)Session["AnswerList"];

    if (!Page.IsPostBack)
    {
        ListView1.DataBind();

    }

    if (al == null)
    {
        Response.Redirect("~/Default.aspx");
    }

    SqlConnection connection = null;
    try
    {
        ListView1.DataSource = al;
        //ListView1.SelectedIndex = ListView1.Items.Count - 1;
        ListView1.DataBind();
        //ListView1.SelectedIndex = ListView1.Items.Count - 1;
        ListView1.SelectedIndex = -1;

        if (IsPostBack == false)
        {
            double questions = al.Count;
            double correct = 0.0;

            for (int i = 0; i < al.Count; i++)
            {
                Answer a = (Answer)al[i];

                if (a.Result == Answer.ResultValue.Correct)
                {
                    correct++;
                }

            }

            //foreach (ListViewItem item in resultGrid.Items)
            //{
            //    Label cor = (Label)item.FindControl("CorrectAns");
            //    Label useran = (Label)item.FindControl("UserAnswer");

            //    if (cor.Text != useran.Text)
            //    {
            //        useran.Font.Bold = true;
            //    }
            //}

            double score = (correct / questions) * 100;

            Scorelbl.Text = string.Format("{0:0.##}", score) + "%";
            if (score >= 80 && score < 100)
            {
                resultext.Text = "Μπράβο " + Profile.UserName + "!!!";

            }

            connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
            connection.Open();

            SqlDataSource userQuizDataSource = new SqlDataSource();
            userQuizDataSource.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
            userQuizDataSource.InsertCommand = "INSERT INTO [UserQuiz] ([QuizID], [DateTimeComplete], [Score], [UserName]) VALUES (@QuizID, GETDATE(), @Score, @UserName)";
            userQuizDataSource.InsertParameters.Add("QuizID", Session["QuizID"].ToString());
            userQuizDataSource.InsertParameters.Add("Score", score.ToString());
            userQuizDataSource.InsertParameters.Add("UserName", User.Identity.Name);

            int rowsAffected = userQuizDataSource.Insert();
            connection.Close();

            if (rowsAffected == 0)
            {

                errorLabel.Text = "";
            }

        }
    }
    catch (Exception exp)
    {
        //throw new Exception(exp.ToString(), exp);
        Response.Redirect("~/Default.aspx");
    }

}
 protected void ListView1_SelectedIndexChanging(object sender, ListViewSelectEventArgs e)
{
    ListView1.SelectedIndex = e.NewSelectedIndex;
    string id = ListView1.SelectedDataKey.Value.ToString();
    SqlDataSource1.SelectParameters["AnswerID"].DefaultValue = id;
    ListView1.DataBind();
}

没有返回任何数据。
回答
问题文本
用户应答器
更正应答器
受保护的无效页面加载(对象发送方、事件参数e)
{
Panel p=(Panel)Master.FindControl(“Panel1”);
如果(p!=null)
{
p、 可见=假;
}
ArrayList al=(ArrayList)会话[“应答列表”];
如果(!Page.IsPostBack)
{
ListView1.DataBind();
}
if(al==null)
{
Response.Redirect(“~/Default.aspx”);
}
SqlConnection=null;
尝试
{
ListView1.DataSource=al;
//ListView1.SelectedIndex=ListView1.Items.Count-1;
ListView1.DataBind();
//ListView1.SelectedIndex=ListView1.Items.Count-1;
ListView1.SelectedIndex=-1;
如果(IsPostBack==false)
{
双重问题=全部计数;
双精度=0.0;
对于(int i=0;i=80&&分数<100)
{
resultText.Text=“Μπράβο”+Profile.UserName+“!!!”;
}
连接=新的SqlConnection(ConfigurationManager.ConnectionString[“ConnectionString”].ConnectionString);
connection.Open();
SqlDataSource userQuizDataSource=新SqlDataSource();
userQuizDataSource.ConnectionString=ConfigurationManager.ConnectionString[“ConnectionString”].ToString();
userQuizDataSource.InsertCommand=“插入[userquick]([QuizID],[DateTimeComplete],[Score],[UserName])值(@QuizID,GETDATE(),@Score,@UserName)”;
userQuizDataSource.InsertParameters.Add(“QuizID”,Session[“QuizID”].ToString());
userQuizDataSource.InsertParameters.Add(“Score”,Score.ToString());
userQuizDataSource.InsertParameters.Add(“用户名”,User.Identity.Name);
int rowsAffected=userQuizDataSource.Insert();
connection.Close();
if(rowsAffected==0)
{
errorLabel.Text=“”;
}
}
}
捕获(异常扩展)
{
//抛出新异常(exp.ToString(),exp);
Response.Redirect(“~/Default.aspx”);
}
}
受保护的无效ListView1\u SelectedIndexChanged(对象发送者,ListViewSelectEventArgs e)
{

ListView1.SelectedIndex=e.NewsSelectedIndex; 字符串id=ListView1.SelectedDataKey.Value.ToString(); SqlDataSource1.SelectParameters[“AnswerID”]。DefaultValue=id; ListView1.DataBind(); }
尝试此操作以获取所选行的值

ListView1.SelectedIndex = e.NewSelectedIndex;
string id=ListView1.SelectedDataKey.Value.ToString();
//Then pass the id's value
ListView1.DataBind();

希望有帮助。

ListView1.SelectedIndex=e.NewsSelectedIndex;字符串id=ListView1.SelectedDataKey.Value.ToString();SqlDataSource1.SelectParameters[“AnswerID”]。DefaultValue=id;ListView1.DataBind()@Ophelia发布您的Listview标记,以及您的代码隐藏以获取更多信息。@Ophelia很高兴知道这一点。我的答案是否有帮助。也开始接受对您有帮助的答案。通过这样做,搜索相同问题的其他用户将受益。谢谢。@Ophelia OK:(最重要的是你至少得到了答案。我没有得到答案。我发布了我的代码,以防你看到它并找出错误所在。