Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.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# OnRowUpdate不接受编辑模板文本框的值_C#_Asp.net_.net_Gridview_Webforms - Fatal编程技术网

C# OnRowUpdate不接受编辑模板文本框的值

C# OnRowUpdate不接受编辑模板文本框的值,c#,asp.net,.net,gridview,webforms,C#,Asp.net,.net,Gridview,Webforms,我试图在行更新时更新gridview中的值。但是,它拒绝接受写在文本框中的值。如果页面未回发,则填充gridview。救命啊 GRIDVIEW: <asp:UpdatePanel runat="server" UpdateMode=Conditional><ContentTemplate> <asp:GridView runat="server" ID="searchGV" AutoGenerateColumns="False" GridLines="N

我试图在行更新时更新gridview中的值。但是,它拒绝接受写在文本框中的值。如果页面未回发,则填充gridview。救命啊

GRIDVIEW:

  <asp:UpdatePanel runat="server" UpdateMode=Conditional><ContentTemplate>
    <asp:GridView runat="server" ID="searchGV" AutoGenerateColumns="False" GridLines="None"
        CssClass="mGrid" EmptyDataText="The Search Did Not Return Any Results"
        PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt" Width="100%" OnRowCancelingEdit="searchGV_RowCancelingEdit"
        OnRowEditing="searchGV_RowEditing" DataKeyNames="media_id" OnRowUpdating="searchGV_RowUpdating">
        <Columns>
            <asp:BoundField DataField="media_id" Visible="false" HeaderText="" />
            <asp:BoundField DataField="dir_path" Visible="false" HeaderText="Dir" />
            <asp:TemplateField HeaderText="Date Taken" >
                <ItemTemplate>
                    <asp:LinkButton ID="dateLinkCsBtn" OnClientClick='<%#Eval("dir_path","Javascript:return test(\"{0}\",event);")%>'
                        runat="server" Text='<%# Bind("date") %>'></asp:LinkButton>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Media Type">
                <ItemTemplate>
                    <asp:Label runat="server" ID="mediaTypeLbl" Text='<%#Eval("description") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Alias File Name">
                <ItemTemplate>
                    <asp:Label runat="server" ID="aliasFileName" Text='<%#Bind("alias_file_name") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox runat="server" Text='<%#Bind("alias_file_name") %>' ID="updateAliasTxt"></asp:TextBox>
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:CommandField ShowEditButton="True" />
        </Columns>
    </asp:GridView>
    </ContentTemplate></asp:UpdatePanel>

声明网格时,仅指定了1*数据键值*

网格视图的日期键以数组格式存储,从0开始。 错误可能是在更新时获取媒体id。您需要按如下方式更改它

protected void searchGV_RowUpdating(object sender, GridViewUpdateEventArgs e)
{

    GridViewRow row = searchGV.Rows[e.RowIndex];
    TextBox new_alias = (TextBox)searchGV.Rows[e.RowIndex].FindControl("updateAliasTxt");
    int media_id = Convert.ToInt16(e.Keys[0]); //this will get the media_id

    Media_DAO media_query2 = new Media_DAO();
    media_query2.update_alias_name_by_id(media_id, new_alias.Text.Trim(), Convert.ToInt16(Session["user_id"]));
    searchGV.EditIndex = -1;
    FillGrid();
}
由于前面的方法是
searchGV.DataKeys[e.RowIndex][“media_id”]
,因此,如果尝试编辑的行号大于1,则可能无法获取media_id值。

GridView的属性返回一组对象,这些对象表示GridView每行的数据键值。因此,
DataKeys[1]
给出第二行,
DataKeys[4]
给出第五行

因此,您需要使用或属性来访问键字段的值

而不是这样做:

int media_id = Convert.ToInt16(searchGV.DataKeys[e.RowIndex]["media_id"]);
这样做:

int media_id = Convert.ToInt16(searchGV.DataKeys[e.RowIndex].Values["media_id"]);
// You can also use the Value property which gives the key value at index 0 
int media_id = Convert.ToInt16(searchGV.DataKeys[e.RowIndex].Value);
int media_id = Convert.ToInt16(searchGV.DataKeys[e.RowIndex]["media_id"]);
int media_id = Convert.ToInt16(searchGV.DataKeys[e.RowIndex].Values["media_id"]);
// You can also use the Value property which gives the key value at index 0 
int media_id = Convert.ToInt16(searchGV.DataKeys[e.RowIndex].Value);